我正在研究创建X509证书和公用/专用 key 对的一些代码。公钥将添加到证书中,并将其发送到对它进行签名的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");

关于c# - 将私钥与.net中的X509Certificate2类相关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18462064/

10-17 00:07