首页 > 解决方案 > 你能给我一些关于 .NET 和 TLS 1.2 的一般性建议吗

问题描述

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

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

在调用失败的服务之前。

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

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

标签: .netssl

解决方案


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

正确的。

由于现在大多数(所有?)服务似乎都需要升级,为什么 Windows 更新不会更改默认值?

从技术上讲,这是一个突破性的变化,因此将旧版本的框架选择到新的 TLS 配置中并不是通过 Windows 更新完成的。相反,它是由框架版本完成的。

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

Microsoft的 TLS 指南推荐了处理框架版本的不同方法。

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

.NET Framework 上的 TLS 也取决于 Windows 的版本。除非客户端库也发布了自己的 TLS 实现,否则客户端库无法合理地强制使用特定版本的 TLS。

我应该读什么来告诉我升级到 TLS 1.2 不是由 Windows 更新提供的

不幸的是——我之前提到的指南有助于理解问题和解决问题的不同方法。希望将来错误和配置会更加清晰。


推荐阅读