强制 .NET 应用程序使用 TLS 1.2 或更高版本

问题描述 投票:0回答:2

我想知道如何强制面向 .NET Framework 4.8 的 .NET 应用程序使用 TLS 1.2 或更高版本(包括未来的 TLS 版本)。

应用程序作为 Windows 服务执行。对于 > 98% 的用户来说,它正确地使用了 TLS 1.2,但在某些情况下,它会尝试使用旧版本,例如 TLS 1.0 甚至 SSL 3.0。使用较旧 TLS 版本遇到问题的用户可以通过更改注册表来解决该问题,但告诉用户在 Windows 注册表中重新配置设置有点冒险。

我遵循 Microsoft 的建议,不要对应用程序进行硬编码以使用特定的 TLS 版本,而是仅依赖操作系统默认值 (https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls )。

所以我想知道的是:.NET 应用程序中是否有某种方法可以:

  1. 如果 Windows 默认 TLS 版本是 TLS 1.2 或更高版本,请使用它。
  2. 如果 Windows 默认 TLS 版本是 SSL 3.0、TLS 1.0 或 TLS 1.1,则使用 TLS 1.2 或更高版本(包括 TLS 1.3)

我知道我可以使用

ServicePointManager.SecurityProtocol
对 TLS 版本进行硬编码,但这违背了 Microsoft 的建议,如果我将其硬编码为 TLS 1.2 和 1.3,那么每当使用 TLS 1.4 并且对客户操作系统进行修补以支持它时,我的应用程序就会仍然使用我不想要的 TLS 1.3。

c# .net tls1.2
2个回答
1
投票

在调用操作之前添加 TLS 声明如何

public static void UploadFile()
    {
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

}

0
投票

System.Net.ServicePointManager.SecurityProtocol = System.Net.SystemDefault

行动项目测试

在服务器上禁用 TLS 1.2

禁用 TLS 1.2 也意味着服务器应用程序应该使用 TLS 1.3,因为我们的应用程序和服务器分别受 OS 2022 和 .net Framework 4.8 支持。

我尝试过以下场景。

场景 1:注册表更改

  1. "HKLM:\\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\\" -Name "Enabled" -Value "0" -Type DWord
    
    
    
     2."HKLM:\\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS
    

    1.2\Server\" -名称“已启用”-值“0”-类型 DWord

结果:这样做时,服务器和应用程序在很多方面都没有响应(您无法远程服务器、付款人、会员 URL 没有响应等)

场景 2:解决方法 在以下路径中引入了值为 1 的新属性“DisableByDefault”

`"HKLM:\\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client\\" -Name "DisableByDefault" -Value "1" -Type DWord`

HKLM:\\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server\\" -Name "DisableByDefault" -Value "1" -Type DWord

  1. 重新启动服务器。

  2. 使用以下值配置 Firefox。 TLS 1.3 = {min 4 , max 4 , Fallback 4} 结果:应用程序开始工作 TLS 1.2 = {min 3 , max 3 , Fallback 3} 结果:应用程序停止工作

这样我们就可以得出结论,TLS 1.2 已禁用,TLS 1.3 已启用。

以上是我禁用 TLS 1.2 和启用 TLS 1.3 时遵循的场景和步骤。

© www.soinside.com 2019 - 2024. All rights reserved.