C# · 12月 28, 2021

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

我正在开发一些创建X509证书和公钥/私钥对的代码.公钥被添加到证书中,并将其发送到签署CA的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”);