当前位置 : 主页 > 编程语言 > c语言 >

c# – 使用crypt32.dll创建签名证书

来源:互联网 收集:自由互联 发布时间:2021-06-25
我想以C#.net编程方式创建由CA签名的证书.我能够使用CertCreateSelfSignCertificate创建一个自签名证书,如下所述: http://msdn.microsoft.com/en-us/library/aa376039(VS.85).aspx Self Signed Certificate in Windows wi
我想以C#.net编程方式创建由CA签名的证书.我能够使用CertCreateSelfSignCertificate创建一个自签名证书,如下所述:
http://msdn.microsoft.com/en-us/library/aa376039(VS.85).aspx
Self Signed Certificate in Windows without makecert?

我正在查看MSDN文档,我似乎无法找到生成证书并从请求中签名的函数.大多数函数似乎是用于操作证书库.我在这里咆哮错了吗?

我尝试了非托管方法也没有成功.与此相反,使用 BouncyCastle创建证书非常简单:

var keygen = new RsaKeyPairGenerator();
keygen.Init(new KeyGenerationParameters(new SecureRandom(), 2048));

var keys = keygen.GenerateKeyPair();

var certGen = new X509V3CertificateGenerator();
var dnName = new X509Name("CN=Test CA");

certGen.SetSerialNumber(BigInteger.ValueOf(1));
certGen.SetIssuerDN(dnName);
certGen.SetNotBefore(DateTime.Today);
certGen.SetNotAfter(DateTime.Today.AddYears(10));
certGen.SetSubjectDN(dnName);
certGen.SetPublicKey(keys.Public);
certGen.SetSignatureAlgorithm("SHA1WITHRSA");

var cert = certGen.Generate(keys.Private);

这是一个自签名CA证书,但创建签名证书是相同的.只需更改颁发者和签名私钥即可.您还可以将证书导出到DER(.cer)和PKCS12(.p12).

网友评论