c# - 将私钥与.net中的X509Certificate2类相关联




ssl (2)

对于所有其他人都有同样的问题,我找到了一个整洁的小代码,让你做到这一点:

http://www.codeproject.com/Articles/162194/Certificates-to-DB-and-Back

byte[] certBuffer = Helpers.GetBytesFromPEM(publicCert, PemStringType.Certificate);
byte[] keyBuffer  = Helpers.GetBytesFromPEM(privateKey, PemStringType.RsaPrivateKey);

X509Certificate2 certificate = new X509Certificate2(certBuffer, password);

RSACryptoServiceProvider prov = Crypto.DecodeRsaPrivateKey(keyBuffer);
certificate.PrivateKey = prov;

我正在研究一些创建X509证书和公钥/私钥对的代码。 公钥被添加到证书中,并发送给签名的CA.

然后通过System.Security.Cryptography.X509Certificates.X509Certificate2类访问返回的证书。 现在我想使用此证书来启动与其他客户端的安全连接。 所以我使用SslStream类。 要启动SSL握手,我使用这个方法:

server.AssociatedSslStream.AuthenticateAsServer(
                        MyCertificate,                      // Client Certificate
                        true,                               // Require Certificate from connecting Peer
                        SslProtocols.Tls,                   // Use TLS 1.0
                        false                               // check Certificate revocation
                    );

此方法要求私钥与证书关联。 当然,由CA返回的证书不包含私钥。 但它在硬盘上存储为.key文件。 X509Certificate2类有一个名为PrivateKey的属性,我猜会将私钥与证书关联起来,但我找不到设置此属性的方法。

有什么办法可以将私钥与.net X509类关联起来吗?


您可以省去复制粘贴所有代码的麻烦,并将证书旁边的私钥存储在pfx / pkcs#12文件中:

openssl pkcs12 -export -in my.cer -inkey my.key -out mycert.pfx

你将不得不提供一个密码,你必须传递给X509Certificate2的构造函数:

X509Certificate2 cert = new X509Certificate2("mycert.pfx","password");




x509certificate