IIS 8.5 服务器不接受来自 Windows Server 2003 的 TLS 1.0 连接

IIS 8.5 服务器不接受来自 Windows Server 2003 的 TLS 1.0 连接

(如果您想知道为什么我要启用已弃用的密码套件,简短的回答是,这是为了那些因为被困在 Windows Server 2003 上而无法使用任何较新版本的人,我们和他们都对此无能为力,并且我们不希望我们为他们提供的服务停止工作,如果我们能帮忙的话。)

我用过IIS 加密启用多种协议、密码、哈希、密钥交换和密码套件(以下是完整列表) 考虑到 Schannel 在 Windows Server 2003 中的功能,它应该包含我们的产品通过 TLS 1.0 连接到该服务器所必需的内容。(自从在 IIS Crypto 中应用更改后,服务器已重新启动。)

但是,服务器断开了连接,并使用以下两个事件日志条目记录此情况,由 Schannel 在系统事件日志中发布:

“从远程客户端应用程序收到 TLS 1.0 连接请求,但服务器不支持客户端应用程序支持的任何密码套件。 SSL 连接请求失败。” - 事件 ID 36874

其次是

“生成了致命警报并发送到远程端点。这可能会导致连接终止。TLS 协议定义的致命错误代码为 40。Windows SChannel 错误状态为 1205。”- 事件 ID 36888

在客户端上使用 Wireshark,我可以看到它正在尝试协商以下密码套件:

            Cipher Suite: TLS_RSA_WITH_RC4_128_MD5 (0x0004)
            Cipher Suite: TLS_RSA_WITH_RC4_128_SHA (0x0005)
            Cipher Suite: TLS_RSA_WITH_3DES_EDE_CBC_SHA (0x000a)
            Cipher Suite: TLS_RSA_WITH_DES_CBC_SHA (0x0009)
            Cipher Suite: TLS_RSA_EXPORT1024_WITH_RC4_56_SHA (0x0064)
            Cipher Suite: TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA (0x0062)
            Cipher Suite: TLS_RSA_EXPORT_WITH_RC4_40_MD5 (0x0003)
            Cipher Suite: TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 (0x0006)
            Cipher Suite: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA (0x0013)
            Cipher Suite: TLS_DHE_DSS_WITH_DES_CBC_SHA (0x0012)
            Cipher Suite: TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA (0x0063)

其中包括:

TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_3DES_EDE_CBC_SHA

包含在我使用 IIS Crypto 启用的选项中。但服务器仍然不想触碰这些密码套件并允许建立连接。它只是断开连接,如以下情况所示尝试使用 OpenSSL 进行连接

为什么 IIS 或 Schannel 不允许使用这些密码套件,而据我所知,我已将它们配置为使用它们,而不管默认值如何?

答案1

我知道这已经过时了,但如果有人想了解更多信息,注册表中也有相关位置。我的想法是,TLS 1.0 可能是 Enabled=0 或 DisabledByDefault=1?

SSL/TLS:

注册表位置:\HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

如果 Protocols 注册表文件夹中有包含 Client 和 Server 子键的键,以及其中的 DisabledByDefault 和 Enabled 的 DWORDS,则这就是配置它的方式。Win 2012 (r1) 的默认状态是 TLS1 被允许并且默认允许。(如果没有,您可以添加它们)

(请注意,服务器用于传入连接,客户端用于传出连接。)

参考:

密码:

注册表位置:\HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers

经过大量研究,我们发现每个人都只使用这个程序,因此我们也使用了 IIS Crypto。(它使我们摆脱了组策略编辑器中密码套件列表上的 1023 个字符限制。)

(附言:如果 3DES(三重 DES)被淘汰,Win XP 将失去与 HTTPS 的所有连接)

参考:

答案2

总结:放弃了使用 Linux 和 Nginx

我始终找不到缺失内容的答案。除了提到的 Windows Server 2012 R2 服务器之外,我还设置了 Windows Server 2008 R2 服务器并对其进行了全面更新,并以相同的方式使用了 IIS Crypto,在我看来,似乎在某个更新中部署了某种 RC4 终止开关,无法以文档中描述的方式停用,尤其是因为另一台未停机修补的 Windows Server 2012 R2 服务器不会执行相同的操作。

由于我不能生活在对运行 Windows Update 的恐惧中,我不得不建立一个运行 Nginx 的 Ubuntu 服务器,处理 TLS 终止和服务器上纯 HTTP 的反向代理,现在我不必公开暴露了。微软缺乏详尽准确的文档,并希望在小更新中彻底改变行为,这表明他们蔑视客户和业务,他们最好向竞争对手学习,学习如何关心客户的安全,同时仍然相信他们自己的判断。

答案3

大多数组织将遵循以下 IIS 8 强化指南:https://benchmarks.cisecurity.org/tools2/iis/CIS_Microsoft_IIS_8_Benchmark_v1.0.0.pdf

我建议您检查此处定义的值:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319 SchUseStrongCrypto

启用强加密会自动禁用 RC4 支持,而且这不是 IIS 加密工具可以触及的事情。

相关内容