添加 TLS 1.2 的注册表项不起作用

添加 TLS 1.2 的注册表项不起作用

客户端始终使用 TLS 1.0 进行通信 在客户端,我有Windows Server 2012 R2(根据文档,它支持 TLS 1.2)在浏览了许多论坛之后,我意识到添加以下注册表项可能会有所帮助。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] “DisabledByDefault”=dword:00000000 “Enabled”=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] “DisabledByDefault”=dword:00000000 “Enabled”=dword:00000001

但是,客户端首先联系服务器的协议是TLS 1.0

客户端配置如下:

Windows Server 2012 R2 .NET httpRuntime targetFramework="4.5.2" .NET Version=4.0.30319.42000 32bit(我认为这意味着它在.NET 框架 4.5.2 上)

另外,我尝试将以下代码添加到应用程序配置Web配置文件。

**Web.config**
    <appSettings>
       <add name="AppContext.SetSwitch:Switch.System.Net.DontEnableSystemDefaultTlsVersions" value="false" />
    </appSettings> 

**App.config**
    <appSettings>
    <AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols=false;Switch.System.Net.DontEnableSystemDefaultTlsVersions=false" />
    </appSettings>

客户端在与服务器初次握手时使用 TLS 1.0 的可能原因是什么?以及如何确保客户端在不禁用 TLS 1.0 的情况下始终尝试与 TLSv1.2 通信?

答案1

我发现何时targetFramework="4.7.2"需要使用这两个 web.config 条目来强制 TLS 1.2:

<appSettings>
  <add key="AppContext.SetSwitch:Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols" value="false" />
  <add key="AppContext.SetSwitch:Switch.System.Net.DontEnableSchUseStrongCrypto" value="false" />

详情请参阅堆栈溢出

我不确定这是否会对您有所帮助,targetFramework="4.5.2"但也许目标是什么并不重要,重要的是安装的是什么版本?

我从未进行过任何注册表更改。我只需要将这两行添加到 web.config 文件中。

相关内容