【问题标题】:Disabling TLS 1.0 breaks ASP.NET application禁用 TLS 1.0 会破坏 ASP.NET 应用程序
【发布时间】:2018-05-14 20:37:13
【问题描述】:

在 Windows Server 2012R2 上运行

我正在尝试在 IIS 上禁用 TLS 1.0,因为客户端有一个站点扫描器,它会将其作为安全问题突出显示。

我设置了一个干净的测试服务器,并且应用程序运行良好,直到我禁用 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 的注册表设置(启用,而不是默认禁用),一切都会再次正常。

在system.web中使用:

<httpRuntime targetFramework="4.7.2" />

我错过了什么?

【问题讨论】:

  • 由于您已禁用 TLS 1.0,因此需要更新代码以通过 TLS 1.2 进行通信,然后可以添加以下代码行,然后再向服务器上托管的服务 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
  • @MohsinMehmood 这是一个常规的网络应用程序。网站正在通过 IE 访问。当站点在启用 TLS 1.0 的情况下运行时,它仍然显示 IE 已通过 TLS 1.2 连接。
  • 使用 IISCrypto 工具确保启用 TLS 1.2。该工具将为启用多个版本的 TLS 提供一个很好的 GUI。另外,使用ssllabs.com/ssltest 测试您的网站
  • 我会尝试通过使用静态文件测试一个简单的网站来让 ASP.Net 脱离循环。这很可能是 IIS 问题。
  • 尝试仅对服务器禁用 TLS 1.0。毕竟这是扫描仪检测到的。我猜即使启用了客户端 1.0,它仍然会尝试 1.2 连接。

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


【解决方案1】:

应用程序本身必须更新以支持 TLS 1.2 握手,因此如果您只能访问配置,则不一定可以更改。如果底层代码不支持,那就不行了。

如果代码以 .NET 4.6 为目标,我相信 TLS 1.2 将在本地运行。在 4.5 中,必须放置一行代码,以便在任何网络发生之前执行它。代码:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

【讨论】:

  • 这不起作用,因为 schannel 问题发生在代码运行之前,例如 global.asax。
  • 整个堆栈中的所有内容都需要支持 TLS 1.2。操作系统、IIS、SQL 和应用程序。
【解决方案2】:

您的网站可能正在通过不支持 TLS 1.1+ 的 SSL 与某些东西进行通信。您可以允许站点扫描程序看不到的传出 TLS 1.0 连接,但这些连接的安全性会降低。

【讨论】:

  • 从详细的日志中,我只看到 TLS 1.2 的成功连接,并且没有进一步的细节表明此失败来自尝试外部通信(该站点没有这样做)。
  • 最终,我认为这是原因 - 内部出站 SQL Server 连接被强制使用 TLS 1.2,而 SQL Server 不支持。
【解决方案3】:

如果您使用的是 .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 并始终强制使用此协议。

【讨论】:

    【解决方案4】:

    您是否尝试启用 schannel 日志记录以获取更多信息?

    https://support.microsoft.com/en-us/help/260729/how-to-enable-schannel-event-logging-in-iis

    希望这将揭示缺失的部分。

    【讨论】:

    • 我将日志记录设置为 7,并且围绕上面发布的错误消息有许多成功的信息级消息: SSL 客户端握手成功完成。协商的密码参数如下。协议:TLS 1.2 CipherSuite:0xC028 交换强度:256
    • 另外:SSL 服务器握手成功完成。协商的密码参数如下。协议:TLS 1.2 CipherSuite:0xC028 交换强度:256
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多