.NET 与 TLS 版本的兼容性

.NET

在支持 TLS 1.1 或 TLS 1.2 操作系统中运行时,兼容最新版本

.NET 4.6 和更高版本
兼容 TLS 1.1 或更高版本(默认设置)。

.NET 4.5 至 4.5.2
默认情况下,.NET 4.5、4.5.1 和 4.5.2 场合, TLS 1.1 和 TLS1.2有效,共有两个选项以进行启用,如下所述。

选项 1:
通过设置 System.Net.ServicePointManager.SecurityProtocol 启用 SecurityProtocolType.Tls12 和 SecurityProtocolType.Tls11,.NET 应用程序可在软件代码中直接启用 TLS 1.1 和 TLS 1.2。

以下 C# 代码是示例:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
选项 2:
通过将以下两个注册表项中的 SchUseStrongCrypto DWORD 值设置为 1(如果不存在请创建),可在默认情况下启用 TLS 1.2,而无需修改源代码。“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319”和“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319”。虽然这些注册表项中的版本号是 4.0.30319,则 .NET 4.5、4.5.1 和 4.5.2 框架也会使用这些值。但默认情况下,这些注册表项将在系统上所有安装 .NET 4.0、4.5、4.5.1 和 4.5.2 应用程序中启用 TLS 1.2。因此在将其部署到生产服务器前,测试此更改是合理措施。这也可用作注册表导入文件。但这些注册表值将不会影响设置 System.Net.ServicePointManager.SecurityProtocol 值的 .NET 应用程序。

.NET 4.0
默认情况下,.NET 4.0 不会启用 TLS 1.2。要默认启用 TLS 1.2,将以下两个注册表项中的 SchUseStrongCrypto DWORD 值设置为 1(如果不存在请创建):“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319”和“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319”。但默认情况下,这些注册表项将在系统上所有安装 .NET 4.0、4.5、4.5.1 和 4.5.2 应用程序中启用 TLS 1.2。我们建议在将其部署到生产服务器前,测试此更改。这也可用作注册表导入文件。但这些注册表值将不会影响设置 System.Net.ServicePointManager.SecurityProtocol 值的 .NET 应用程序。

.NET 3.5 和更低版本
并不兼容 TLS 1.1 或更高版本的加密


作者最新文章
C# 删除一维数组内的某个值(元素), C# 删除数组元素的方法
C# 如何判断一个字符串是否包含另一个字符串的方法,C# IndexOf 的使用
Winform 只能输入整数的TextBox (文本框) 控件
Winform 禁止重复启动,单实例exe程序
Winform TextBox (文本框) 控件禁止输入内容