Windows Server 2012 R2 TLS 1.2 问题

Windows Server 2012 R2 TLS 1.2 问题

我在 Windows Server 2012 R2(应用程序 Web 服务器,IIS)上遇到了 TLS 1.2 问题,无法访问https://api.nuget.org/v3/index.json即使我看到 TLS 1.2 已启用,我仍无法通过 Internet Explorer 访问。

我有另一台具有相同操作系统和相同操作系统更新(但没有 IIS)的服务器,并且该服务器可以毫无问题地访问 API 或任何其他具有 TLS 1.2 的端点)

在有问题的服务器上,我尝试了以下操作:

  1. 使用 IISCrypto 启用所有内容 -> 重新启动 -> 失败
  2. 按照 Microsoft 文档手动更改注册表设置 -https://docs.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2- 失败的
  3. 使用以下脚本完全重置并重新启用 TLS 1.2 - https://www.hass.de/content/setup-microsoft-windows-or-iis-ssl-perfect-forward-secrecy-and-tls-12- 失败的

到目前为止,我已经花了三天时间尝试排除故障,并查看这两台服务器之间到底出了什么问题,为什么一个 Windows 服务器可以运行,而另一个却不运行。

任何提示、故障排除步骤或工具都非常受欢迎!

截图 在此处输入图片描述

  • 通过 Nuget CLR
  • 在有问题的服务器上 在此处输入图片描述
  • 在服务器上运行 在此处输入图片描述

答案1

因此,经过数小时的故障排除后,我终于能够解决问题并通过 TLS 1.2 从我们的服务器访问 API。

我们的服务器上有 .net 框架,无法访问 API。Microsoft 建议我们设置以下注册表以强制 SystemDefaultTlsVersions

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

答案2

我的声誉很低所以我必须写一个答案。

浏览器消息可能会产生误导

您应该验证 DNS 是否解析相同的目标以及客户端是否检测到任何类型的代理。

它们可能是通过防火墙进行数据包检查,也可能是使用透明代理。

验证您在 openssl 中使用 s_client 获得的响应: https://stackoverflow.com/questions/7885785/using-openssl-to-get-the-certificate-from-a-server

使用浏览器中的开发人员工具查看“网络”,查看您的请求被发送到哪里(可能通过代理)以及您得到了什么响应。

在 Powershell 中禁用一些 SSL/TLS 检查: https://stackoverflow.com/questions/34331206/ignore-ssl-warning-with-powershell-downloadstring

验证两者是否具有相同的 IPv6 网络配置。也许其中一个因此连接到另一台服务器。

编辑:至少进行 openssl 检查以确保您可以获得正确的证书。禁用 Powershell 的 SSL/TLS 检查并进行测试将有助于确定问题所在。

相关内容