c# - 获取 "Could not establish secure channel for SSL/TLS with authority"即使 ServerCertificateValidationCallback 返回 true

标签 c# wcf windows-7 ssl-certificate ssl

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

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

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

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

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

最佳答案

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

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

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

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

关于c# - 获取 "Could not establish secure channel for SSL/TLS with authority"即使 ServerCertificateValidationCallback 返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10988005/

相关文章:

c# - 在 C# 中加载 C++ dll 时,CLR 是否自动加载 C++ 文件的依赖项?

带有默认空标记的 WCF 请求

wcf - 第一次机会 System.Configuration.ConfigurationErrorsException "This element is not currently associated with any context"

c# - WCF 服务能否同时支持缓冲和流式传输模式?

c++ - 从隐藏变为可见时,如何阻止窗口短暂地重新出现在其最后可见的位置?

javascript - 跨域SignalR导入问题

c# - 将跨度添加到标题模板中的选项卡

windows-7 - 缺少 Microsoft 进度条控件

c# - 列表框(多选)选定索引

asp.net - IIS 7.5 中的 Windows 身份验证因信任关系异常而失败