2

我正在与一个使用传输安全性和证书身份验证设置 WCF 服务 (WebHttpBinding) 的供应商合作。我为正常工作的供应商提供了一个类似的服务,所以我对它应该如何工作有一个基本的了解。

在 Windows 7 上运行,当我在自己的帐户下使用该服务时,一切正常,并且我得到了回复。当我在测试帐户下使用它时,我在 mscorlib 中得到一个异常,它“无法为具有 XXXX 权限的 SSL/TLS 建立安全通道”。如果我将测试帐户添加到内置管理员组,它工作正常。

服务器的证书是自签名的,主题字段设置为 CN=XXXX,我在 Personal 存储中拥有服务器证书,在 Trusted Root Certificate Authorities 存储中拥有 CA 证书。

此外,如果我尝试将 System.Net.ServicePointManager.ServerCertificateValidationCallback 设置为打印诊断并返回 true,我会得到一些有趣的行为。在我的账号下运行,回调调用了两次,然后WCF调用成功。在测试账户下运行,调用一次,返回,然后我得到上面的异常。

我最好的猜测是,这与测试帐户缺乏的某些特权有关,但我不明白 Windows 是如何处理证书的,无法确定地知道,而且我不知道从哪里开始寻找。

4

2 回答 2

3

这是问题的根源:...我在 Personal 存储中拥有服务器证书,在 Trusted Root Certificate Authorities 存储中拥有 CA 证书。

如果您在测试帐户的个人商店下安装服务器证书,它应该可以解决它,我认为 cmd 提示符的命令应该类似于

winhttpcertcfg.exe -g -c LOCALMACHINE\MY -s "certtype" "testuseraccountname"

或使用 mmc 管理单元。(我不太确定这有多可靠,我使用上述工具)

于 2012-06-12T07:19:19.647 回答
3

与微软工程师通了几个小时的电话,但问题解决了。由于这与您在某些服务器证书问题中看到的错误消息完全相同,因此我认为这一定是问题所在。事实证明,测试帐户无权访问客户端证书私钥。这应该可以使用 winhttpcertcfg 解决(如winhttpcertcfg 在 Windows 7 中授予 iiS 用户访问权限

于 2012-06-12T19:22:05.460 回答