为什么sslStream.AuthenticateAsServer不需要UAC和备选方案

时间:2011-11-30 12:58:05

标签: c# .net ssl sslstream

在调整Web代理代码时,我注意到如果我在带有UAC(用户访问控制)的应用程序中运行代码,我会收到异常

以下是抛出异常的位置:

sslStream.AuthenticateAsServer(_certificate, false, SslProtocols.Tls | SslProtocols.Ssl3 | SslProtocols.Ssl2, false);

这是我得到的错误(使用UAC)

The server mode SSL must use a certificate with the associated private key.

第一个问题:为什么?

第二个问题:还有其他选择吗?我真的想在UAC中运行它(注意http工作正常)

2 个答案:

答案 0 :(得分:0)

听起来您的证书的私钥可能位于文件访问受限的地方。这样不仅任何用户都可以读取您的私钥。以有限的权限运行服务的目的是什么?如果该密钥仅用于此服务,您可以考虑删除其所在文件夹的安全限制,但如果此密钥适用于您的整个域,我会犹豫不决...

答案 1 :(得分:0)

您是否已将证书安装在相应的证书库中?

根据我记得使用证书时,您加载的文件仅用作在其中一个Windows证书库中标识服务器证书的参考。如果代理在一个帐户下运行但在另一个帐户下运行,则可能是您没有在其他帐户的个人证书存储中安装证书。