.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 或更高版本的加密


作者最新文章
ASP.NET, ASP.NET Core WebApi 返回 Controller 返回 Json 类型结果
Visual Studio 调试 ASP.NET Core 无法连接 IIS Express 服务器
ASP.NET WebApi 与 ASP.NET Core WebApi 返回 HttpResponseMessage
SQL Server 中 CASE WHEN 使用
html table 设置表格背景图片,背景色