.NET 4.5.1中的WCF客户端:如何在使用WebRequest时启用TLS 1.2?

问题描述 投票:29回答:3

我们的.net WCF客户端,WebRequest调用,编译到运行在Win2012-R2上的Windows EXE,拒绝连接到仅面向TLS 1.2的Web服务器

我们知道Win2012和.NET 4.5x支持TLS 1.2

当服务器表面TLS 1.0及更高版本时,我们没有问题。只有当我们连接的服务器具有DISABLED TLS 1.0,1.1和SSL2以及SSL3时才会出现此问题。 Server ONLY表面TLS 1.2。 Chrome和firefox(在Win 7及更高版本上)可以很好地连接到服务器(没有任何警告或SSL问题)。

服务器证书是%100 OK。

问题是WebRequest在这种情况下无法连接。

我们需要在代码中设置什么,以便我们使用WebRequest将连接到可能运行TLS 1.2,1.1,1.0和/或SSL v3的系统?

.net wcf
3个回答
34
投票

您应该使用.NET 4.5或更高版本,并在您的代码中添加以下行:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

33
投票

虽然不容易理解,但所需的属性是:

System.Net.ServicePointManager.SecurityProtocol

这可用于在WCF环境中禁用和启用TLS级别。

此外,您可以看到WCF当前使用的内容:

Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());

感谢:How do I disable SSL fallback and use only TLS for outbound connections in .NET? (Poodle mitigation)


0
投票

重要的是,你应该至少从.Net Framework v4.5开始。旧版本不支持TSL 1.2。稍后,在对服务器进行身份验证时,请明确使用此协议:

    sslStream.AuthenticateAsClient(this._configuration.Host, null, SslProtocols.Tls12, true);
© www.soinside.com 2019 - 2024. All rights reserved.