客户端始终使用 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 文件中。