2016-01-21 706 views
4

在我们的Windows 2012 Server R2上,我们需要禁用TLS 1.0。对于.NET 4.5和.NET 4.5.1,默认启用TLS 1.1和TLS 1.2

但是,我们运行了.NET 4.5 Wcf服务。我们发现,如果我们禁用TLS 1.0,WCF服务不再运行,因为我们得到错误'现有连接被远程主机强行关闭'。

在.NET 4.5和.NET 4.5.1中默认启用TLS 1.1/1.2吗?如果不是,我们认为是这种情况,那么在我们的WCF项目中,我们是否强制该项目使用TLS 1.1/1.2?

+0

一般不会,默认的协议是SSL 3.请参阅http://stackoverflow.com/questions/28286086/default-securityprotocol-in-net-4-5 – JConstantine

+0

重复? http://stackoverflow.com/questions/29663974/wcf-client-in-net-4-51-how-to-enable-tls-1-2-when-webrequest-is-used – usselite

回答

18

号的各种框架版本启用默认的协议是:

  • 的.NET Framework 4.5和4.5.1:SSLv3和使用TLSv1
  • 的.NET Framework 4.5.2:在SSLv3,使用TLSv1和TLSv1.1
  • 的.NET Framework 4.6和更高版本:使用TLSv1,TLSv1.1,和TLS1.2

来源:[1][2]

您可以指定哪些协议应用程序支持使用ServicePointManager类,特别是通过设置SecurityProtocol属性,它在你的情况,你会想设置为以下:

System.Net.ServicePointManager.SecurityProtocol = 
    SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
+3

非常感谢你 - 这是疯了,这没有被选为答案。一行代码,你节省了我几个小时的调试或注册表黑客攻击。谢谢。 – bri

+0

这绝对是正确的。但是,通过安装.NET 4.6或更高版本并启用[.NET强加密注册表项](https://docs.microsoft.com/zh-cn/officeonlineserver/enable-tls),也可以在不更改代码的情况下启用TLS 1.2 -1-1和-TLS-1-2-支持 - 在办公室 - 在线服务器#使能强加密技术在净框架-45或-更高)。更多信息在这里:https://github.com/TheLevelUp/pos-tls-patcher – user24601