禁用TLS 1.0会破坏ASP.NET应用程序

时间:2018-05-14 20:37:14

标签: asp.net ssl iis-8 windows-server-2012-r2

在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" />

我错过了什么?

4 个答案:

答案 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,并且始终强制使用此协议。