我正在创建一个与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必须使用带有关联私钥的证书。”
为什么私钥消失了?我需要做些什么才能让它坚持下去?
答案 0 :(得分:1)
在所有情况下,您是同一个用户吗?当您说“以管理员身份运行”时,我认为您可能会导致它将私钥与其他用户关联,或者私钥文件可能没有适当的权限。如果是权限问题,或者您不确定密钥是否正在消失,请使用FindPrivateKey工具: http://msdn.microsoft.com/en-us/library/ms732026.aspx 我认为它是Server2003工具的一部分,但它在常规XP上运行良好。所以希望它也可以在Windows7上运行。我现在不在我的Win7机器上。