获取“无法为具有权限的 SSL/TLS 建立安全通道”,即使 ServerCertificateValidationCa

本文关键字:安全 建立 TLS 通道 ServerCertificateValidationCa 即使 SSL 权限 获取 | 更新日期: 2023-09-27 18:36:46

我正在与一家供应商合作,该供应商使用具有证书身份验证的传输安全性设置了 WCF 服务 (WebHttpBinding)。我为供应商托管了类似的服务,该服务工作正常,因此我有一个基本的想法,应该如何工作。

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

服务器的证书是自签名的,主题字段设置为 CN=X.X.X.X,我在个人存储中具有服务器证书,在受信任的根证书颁发机构存储中具有 CA 证书。

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

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

获取“无法为具有权限的 SSL/TLS 建立安全通道”,即使 ServerCertificateValidationCa

这是问题的根源:...我在个人存储中具有服务器证书,在受信任的根证书颁发机构存储中具有 CA 证书。

如果您在测试帐户的个人存储下安装服务器证书,它应该可以解决它,我认为 cmd 提示符的命令应该是这样的

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

或使用 MMC 卡单元。(我不太确定这有多可靠,我使用上面的工具)

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

相关文章: