(如果您想知道为什么我要启用已弃用的密码套件,简短的回答是,这是为了那些因为被困在 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 被允许并且默认允许。(如果没有,您可以添加它们)
(请注意,服务器用于传入连接,客户端用于传出连接。)
参考:
- https://support.microsoft.com/en-au/kb/187498
- https://blogs.msdn.microsoft.com/friis/2016/07/25/disabling-tls-1-0-on-your-windows-2008-r2-server-just-because-you-still-have-one/
密码:
注册表位置:\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 加密工具可以触及的事情。