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),並且該伺服器在使用 TLS 1.2 存取 API 或任何其他端點時沒有問題)

在有問題的伺服器上,我嘗試了以下操作:

  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- 失敗的

此時,我花了 3 天的時間嘗試排除故障,看看這兩台伺服器之間有什麼問題,為什麼一台 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

使用瀏覽器中的 DeveloperTools 查看“網頁”並查看您的請求發送到何處(可能透過代理)以及您收到的回應。

在 Powershell 中停用某些 SSL/TLS 檢查: https://stackoverflow.com/questions/34331206/ignore-ssl-warning-with-powershell-downloadstring

驗證兩者俱有相同的 IPv6 網路配置。也許其中一個因此連接到另一台伺服器。

編輯:至少進行 openssl 檢查以確保您可以獲得正確的憑證。停用 Powershell 的 SSL/TLS 檢查並進行測試將有助於確定問題所在。

相關內容