Windows-Server-2012-R2

IIS 8.5 伺服器不接受來自 Windows Server 2003 的 TLS 1.0 連接

  • October 12, 2017

(如果您想知道我為什麼要嘗試啟用已棄用的密碼套件,簡短的回答是,它適用於那些因為卡在 Windows Server 2003 上而無法使用任何更新的人,我們和他們可以對此做任何事情,如果我們能提供幫助,我們不希望我們為他們提供的服務停止工作。)

考慮到 Schannel 在 Windows Server 中的功能,我已經使用IIS Crypto啟用了許多協議、密碼、雜湊、密鑰交換和密碼套件(這裡是完整列表),它們應該包含我們的產品通過 TLS 1.0 連接到該伺服器所必需的內容2003. (伺服器已重新啟動,因為更改已應用於 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 不允許使用這些密碼套件,據我所知,我已將它們都配置為使用它們而不管預設值如何?

TL;DR:放棄並使用 Linux 和 Nginx

我從來沒有找到失去的答案。除了提到的 Windows Server 2012 R2 伺服器之外,我還設置了一個 Windows Server 2008 R2 伺服器並對其進行了全面更新,並以相同的方式使用了 IIS Crypto,在我看來,在一些更新中部署了某種 RC4 終止開關無法以記錄的方式停用的行,特別是因為另一個尚未關閉修補的 Windows Server 2012 R2 伺服器沒有做同樣的事情。

因為我不能害怕執行 Windows 更新,所以我不得不求助於設置一個執行 Nginx 的 Ubuntu 伺服器,處理 TLS 終止和反向代理伺服器上的純 HTTP 上的伺服器,現在我不必公開公開。微軟缺乏詳盡而準確的文件,並且希望在小更新中顯著改變行為,這表明對他們的客戶和業務的蔑視,他們最好向競爭對手學習如何在仍然信任他們的同時關心客戶的安全以他們自己的判斷。

我知道這是舊的,但如果有人想知道更多,系統資料庫中也有這個位置。我的想法是 TLS 1.0 可能是 Enabled=0 或 DisabledByDefault=1?

SSL / TSL:

系統資料庫位置:\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 的所有連接)

參考:

引用自:https://serverfault.com/questions/794928