我正在创建一个与 SslStream 一起使用的证书,并且我一直在 XP 下这样做:
makecert -r -pe -n "CN=aName" -ss my -sr localmachine -sky exchange
-sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 server.cer
如果我理解正确,这会在 server.cer 中创建一个证书,并在我的个人证书存储中为它创建一个私钥。完成此操作后,我可以创建一个像这样的证书对象:
X509Certificate.CreateFromCertFile(certFile);
然后我将它与 SSLStream 一起使用,一切正常。
现在我已经切换到 Windows 7,每次重启机器时私钥似乎都消失了。我以管理员身份运行命令提示符,并执行上面显示的相同 makecert 命令。这成功并且 SSL 连接正常工作。如果我重新启动机器,对 AuthenticateAsServer 的调用将失败,并出现异常“服务器模式 SSL 必须使用具有关联私钥的证书”。
为什么私钥会消失?我需要做什么才能让它坚持下去?