【发布时间】:2015-06-22 05:24:35
【问题描述】:
我们的 .net WCF 客户端,WebRequest 调用,编译为 Windows EXE,在 Win2012-R2 上运行,拒绝连接到仅显示 TLS 1.2 的 Web 服务器
我们知道 Win2012 和 .NET 4.5x 支持 TLS 1.2
当服务器显示 TLS 1.0 及更高版本时,我们没有问题。只有当我们连接的服务器禁用 TLS 1.0、1.1 和 SSL2 和 SSL3 时,才会出现问题。服务器仅显示 TLS 1.2。 Chrome 和 firefox(在 Win 7 和更高版本上)可以很好地连接到服务器(没有任何警告或 SSL 问题)。
服务器证书是 %100 OK。
问题是在这种情况下WebRequest无法连接。
我们需要在代码中设置什么,以便我们使用 WebRequest 连接到可能运行 TLS 1.2、1.1、1.0 和/或 SSL v3 的系统?
【问题讨论】:
-
很可能,这是操作系统上启用的密码。您使用的是什么操作系统?您是否应用了所有补丁和服务包?您是否尝试更新到 .NET 4.5.2?
-
@ErikFunkenbusch 不,抱歉,您不正确。这不是密码启用的问题(在 Win2012-R2 上,所有密码都存在并且全部启用。)也不是 .NET 4.51 的限制,.NET 4.x 中存在 TLS 1.2 支持。问题是如何启用它,因为 .NET 本身在默认情况下没有为 1.2 启用。
-
你是说它不会连接到任何网站的任何安全连接?
-
@ErikFunkenbusch 请参阅 OP。问题是,如果服务器仅显示 TLS 1.2,则直接在 .NET 4.51 下的 Win2012-R2 上使用 WebRequest 时无法连接到服务器
-
另外,您确定服务器证书有效吗?您是否尝试过绕过证书验证来验证这是否是问题所在?你也设置了
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12吗?