3

我正在创建一个与 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 必须使用具有关联私钥的证书”。

为什么私钥会消失?我需要做什么才能让它坚持下去?

4

1 回答 1

1

您在所有情况下都是同一个用户吗?当您说“以管理员身份运行”时,我认为您可能会导致它将私钥与其他用户相关联,或者私钥文件可能没有适当的权限。如果是权限问题,或者您不确定密钥是否消失,请使用 FindPrivateKey 工具:http: //msdn.microsoft.com/en-us/library/ms732026.aspx 我认为它是 Server2003 的一部分工具,但它在普通 XP 上运行良好。所以希望它也能在 Windows7 上运行。我现在不在我的 Win7 机器上。

于 2010-04-01T19:27:11.187 回答