在Windows Server 2012R2上运行
我正在尝试在IIS上禁用TLS 1.0,因为客户端有一个站点扫描程序,突出显示这是一个安全问题。
我设置了一个干净的测试服务器,App正常运行,直到我禁用TLS 1.0。
我更新了所有适当的设置:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[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]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
在事件查看器中,我得到:
生成致命警报并将其发送到远程端点。这可能 导致连接终止。 TLS协议定义 致命错误代码为70. Windows SChannel错误状态为105。
如果我仅针对TLS 1.0(已启用,而不是DisabledByDefault)恢复注册表设置,则一切正常。
在system.web中使用:
<httpRuntime targetFramework="4.7.2" />
我错过了什么?
答案 0 :(得分:6)
必须更新应用程序本身以支持TLS 1.2握手,因此如果您只能访问配置,则无法更改。如果底层代码不支持它,它将无法工作。
如果代码的目标是.NET 4.6,我相信,TLS 1.2将在本地运行。在4.5中,必须放置一行代码,以便在任何网络发生之前执行。代码:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
答案 1 :(得分:2)
您的网站可能正在与不支持TLS 1.1+的SSL进行通信。您可以允许站点扫描程序无法看到的传出TLS 1.0连接,但这些连接的安全性会降低。
答案 2 :(得分:1)
您是否尝试启用schannel日志记录以获取更多信息?
https://support.microsoft.com/en-us/help/260729/how-to-enable-schannel-event-logging-in-iis
希望能揭示失踪的一块。
答案 3 :(得分:0)
如果您使用的是.net 4.7或更高版本,请尝试此操作。
我为此使用了IIS Crypto。您禁用TLS 1.0和1.1,应用并重新启动。完成所有应用程序之后,SharePoint和网站将使用TLS 1.2
您还应该在web.config文件中指明目标版本
<system.web> <httpRuntime targetFramework = "4.7.2" /> <compilation targetFramework = "4.7.2"> </compilation> </system.web>
这将使其支持TLS 1.2,并且始终强制使用此协议。