无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?
Posted
技术标签:
【中文标题】无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?【英文标题】:Could not create SSL/TLS secure channel - Could the problem be a proxy server? 【发布时间】:2010-12-08 17:09:57 【问题描述】:我有一个 C# 应用程序,它调用使用证书进行身份验证的 Web 服务方法。 该代码有效,因为当它安装在服务器 A(没有代理)上时,它会进行身份验证。
当我在客户端站点的服务器 B 上安装代码时,它安装在代理后面。我真的尝试了几乎所有方法,但我不断收到此错误:
无法创建 SSL/TLS 安全通道
您认为这个问题可能是由代理服务器引起的吗?如果您对此有任何亲身经历,请分享。
谢谢
【问题讨论】:
【参考方案1】:我的回答和 Snakebyte 类似。在我的情况下,证书的私钥需要 IIS_IUSRS 用户访问权限。
-
打开证书 MMC
右键单击您的证书并从上下文菜单中选择所有任务> 管理私钥...
添加 IIS_IUSRS 用户并设置适当的权限。
【讨论】:
【参考方案2】:我遇到了同样的问题。在我的情况下,证书需要网络服务访问权限。你可以通过
-
打开证书MMC
导航到证书(本地计算机)> 个人 > 证书
右键单击您的证书并从上下文菜单中选择所有任务> 管理私钥...
设置适当的权限
【讨论】:
是的!我有同样的问题,这为我解决了。谢谢谢谢谢谢! 非常感谢!超级英雄! 这对我有帮助!谢谢!【参考方案3】:根据我的经验,几乎所有此类消息都是由于链中的某些机器(客户端、代理、服务器)由于某种原因不“喜欢”证书。
为了详细说明 twk 所说的,如果您使用的是自签名证书,或者您自己的 CA,您需要至少将签名证书安装在服务器上的受信任的权威存储中,并且可能在代理上。
我遇到的常见问题:
服务器上的证书未由 PROXY 或 CLIENT 信任的机构签署 CLIENT 上的证书未由 PROXY 或 SERVER 信任的机构签署 糟糕,我在创建要安装在客户端上的证书时忘记导出私钥 我的进程没有读取客户端私钥的权限 客户端证书受密码保护,读取证书时我没有指定凭据。【讨论】:
【参考方案4】:如果您的证书不受信任(自签名),则 C# 客户端将拒绝连接。
【讨论】:
您可以从 Verisign(或 Thawte 等)购买证书,但除非 Verisign 的签名密钥在“受信任的根证书颁发机构”密钥库中,否则它不会被信任。现在,在大多数主要 CA 的情况下,签名密钥已经存在。但是,这不是保证。你一定要检查!至少,加载证书管理器并双击密钥并转到“证书路径”选项卡并确保它显示“此证书正常”。而且,在客户端,您还应该在“常规”选项卡上看到“您有与此证书对应的私钥”。以上是关于无法创建 SSL/TLS 安全通道 - 问题可能出在代理服务器上吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Service Fabric 中通过 HTTPS 调用 WCF:请求被中止:无法创建 SSL/TLS 安全通道
无法创建 SSL/TLS 安全通道 - GetRequestStream()