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

Jon*_*ica 30 .net wcf

我们的.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的系统?

Jon*_*ica 35

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

System.Net.ServicePointManager.SecurityProtocol

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

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

Console.WriteLine(System.Net.ServicePointManager.SecurityProtocol.ToString());
Run Code Online (Sandbox Code Playgroud)

感谢: 如何在.NET中禁用SSL回退并仅使用TLS进行出站连接?(贵宾犬缓解)

  • @mmcrae windows版本与操作系统本身不支持TLS 1.2(通过schannel dll)的程度有关,然后在.NET中要求它不会给你...请参阅https:// blogs .msdn.microsoft.com/kaushal/2011/10/02 /支持换ssltls的协议上窗口/ (3认同)

小智 34

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

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)

  • 您无需触摸代码:https://docs.microsoft.com/en-us/officeonlineserver/enable-tls-1-1-and-tls-1-2-support-in-office-online-server (3认同)
  • 你的代码正在消除SecurityProtocol中的***并且*仅**TLS1.2.一些Web服务可能仍在TLS1.1上.要添加TLS1.2作为可能的选项以及其他选项,请使用"| ="更多详细信息https://www.ryadel.com/en/asp-net-client-server-cannot-comunicate-because-they-possess -common算法-如何至FIX-C-锋利/ (3认同)