您能给我一些有关.NET和TLS 1.2的一般建议吗

时间:2018-09-27 23:45:53

标签: .net ssl

我搜索了其他答复,对我有用的解决方案是插入

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

在调用失败的服务之前。

但是,我剩下这些问题了。

  1. 这仅更改该特定应用程序的默认协议吗?
  2. 由于大多数(全部?)服务现在似乎都需要升级,因此Windows更新为何未更改默认设置?
  3. 由于服务需要它,为什么服务的开发人员所提供的库不将其包含在他们的代码中?
  4. 我花了很长时间才发现问题的根源,因为来自应用程序的错误消息(来自Microsoft代码)仅给出了非常普遍的错误。我应该读什么来告诉我Windows更新不是提供升级到TLS 1.2的功能?我花了很多时间认为这是防火墙问题....
  5. 所以最好的建议是在我的每个应用程序的开头都包含上面的代码(以防万一!)?

2 个答案:

答案 0 :(得分:2)

TLS 1.2是.NET Framework 4.6.2及更高版本中的默认协议。

如果确保您的应用程序在4.6.2或更高版本的目标框架上运行,则无需包含该行代码。

遇到此问题时,我还必须确保Web.config中的<httpRuntime>节点明确声明目标框架(例如<httpRuntime targetFramework="4.6.2" />

答案 1 :(得分:2)

  

这是否仅更改该特定应用程序的默认协议?

正确。

  

由于大多数(所有?)服务现在似乎都需要升级,因此Windows更新为何未更改默认设置?

从技术上讲,这是一个重大更改,因此,通过Windows Update无法将Framework的旧版本选择为新的TLS配置。而是由框架版本完成。

在某些情况下,即使支持TLS 1.0的服务器可以协商1.0,支持TLS 1.0的服务器也会错误地处理提供TLS 1.2的客户端。

Microsoft的

The TLS guide建议使用不同的方法来处理框架的版本。

  

由于服务需要它,为什么服务的开发人员提供的库未将其包含在他们的代码中?

.NET Framework上的

TLS也取决于Windows的版本。客户端库无法合理地强制使用特定版本的TLS,除非它们也提供了自己的TLS实现。

  

我应该读些什么,以告诉我Windows更新不是提供升级到TLS 1.2的功能

那是不幸的-我前面提到的指南有助于理解该问题以及不同的补救方法。希望将来的错误和配置会更加清楚。