我正在尝试使用c#生成一个
X509Certificate2
。
我遇到了这个答案,这就是我正在寻找的。但是,该代码使用的是绝对方法。
方法
SetSignatureAlgorithm
有以下警告
如果Generate与ISignatureFactory一起使用则不需要
此外,代码
certificateGenerator.Generate(issuerPrivateKey, random)
有以下消息
使用带有 ISignatureFactory 的生成
如何创建
ISignatureFactory
来修复这两个警告?
这对你有用吗?此方法动态生成私钥,使用自签名证书对其进行签名,并将证书和密钥作为 PKCS#12 捆绑包返回(如果需要,可以保存在 .pfx 文件中)。
public static X509Certificate2 CreateX509CryptCertificate(string name, int keyLength = 2048, int yearsValid = 3) {
X509KeyStorageFlags storageFlags = X509KeyStorageFlags.PersistKeySet |
X509KeyStorageFlags.Exportable;
using var rsa = RSA.Create(keyLength);
var request = new CertificateRequest($"CN={name}", rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
using X509Certificate2 ephemeral = request.CreateSelfSigned(DateTime.Now, DateTime.Now.AddYears(yearsValid));
return new X509Certificate2(ephemeral.Export(X509ContentType.Pkcs12), string.Empty, storageFlags);
}