如何在不破壞 RDP 的情況下禁用 TLS 1.0?
我們的信用卡處理器最近通知我們,自 2016 年 6 月 30 日起,我們將需要禁用 TLS 1.0 以保持 PCI 合規性。我試圖通過在我們的 Windows Server 2008 R2 機器上禁用 TLS 1.0 來積極主動,結果發現在重新啟動後我完全無法通過遠端桌面協議 (RDP) 連接到它。經過一些研究,RDP 似乎只支持 TLS 1.0(請參閱此處或此處),或者至少不清楚如何通過 TLS 1.1 或 TLS 1.2 啟用 RDP。有人知道在不破壞 RDP 的情況下在 Windows Server 2008 R2 上禁用 TLS 1.0 的方法嗎?Microsoft 是否計劃支持 RDP over TLS 1.1 或 TLS 1.2?
注意:似乎有一種方法可以通過將伺服器配置為使用 RDP 安全層但禁用 Network Level Authentication來做到這一點,這似乎是用一種邪惡換另一種邪惡。
更新 1:微軟現在已經解決了這個問題。有關相關伺服器更新,請參閱下面的答案。
更新 2:Microsoft 發布了有關SQL Server 支持 PCI DSS 3.1的教程。
Microsoft 於 2015 年 9 月 15 日發布了針對此問題的更新檔
我已經研究了幾天,因為我們必須遵守要求禁用 TLS 1.0 的 PCI-DSS 3.1。
我們也不想退回到 RDP 安全層,這是一個主要的安全問題。
我終於設法找到了一些文件來確認 RDP 支持 TLS 1.1 和 TLS 1.2。該文件隱藏在SChannel 日誌記錄和非常詳細的 RDP 規範中。
Technet 或其他 Microsoft 站點上完全缺乏主流文件,因此希望在這裡記錄這些文件可能會對某些人有所幫助。
提供的連結的相關摘錄:
從 MSDN 連結:
"RDP supports four External Security Protocols: TLS 1.0 ([RFC2246]), TLS 1.1 ([RFC4346])<39>, TLS 1.2 ([RFC5246])<40>"
來自 RDP 規範 PDF:
"When Enhanced RDP Security is used, RDP traffic is no longer protected by using the techniques described in section 5.3. Instead, all security operations (such as encryption and decryption, data integrity checks, and Server Authentication) are implemented by one of the following External Security Protocols: TLS 1.0 (see [RFC2246]) TLS 1.1 (see [RFC4346]) TLS 1.2 (see [RFC5246]) CredSSP (see [MS-CSSP])" "<39> Section 5.4.5: TLS 1.1 is not supported by Windows NT, Windows 2000 Server, Windows XP,Windows Server 2003, Windows Vista and Windows Server 2008. <40> Section 5.4.5: TLS 1.2 is not supported by Windows NT, Windows 2000 Server, Windows XP, Windows Server 2003, Windows Vista, and Windows Server 2008"
因此,可以根據本文件得出結論,您可以在 Windows Server 2008 R2 上使用 TLS 1.1 或 1.2。
但是,我們的測試證明,當禁用 TLS 1.0 並且 RDP 安全選項設置為需要 TLS 1.0 時,這在 Windows 7 RDP 客戶端(版本 6.3.9600)上不起作用。
當然,這也啟用了 TLS 1.1 和 1.2,它們在 2008R2 上預設關閉 - 順便說一下,我們使用來自 Nartac Software 的非常有用的 IIS 加密工具來執行此操作。
在查看此問題時,啟用 SChannel 日誌記錄以查看打開會話時發生的更多詳細資訊很有用。
您可以通過將 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging 鍵更改為 5 並重新啟動來設置SChannel 日誌記錄。
完成此操作後,您可以觀察 SChannel 事件,這些事件顯示建立 RDP 連接時正在使用的 TLS 版本。啟用日誌記錄後,當 RDP 客戶端嘗試在禁用 TLS 1.0 的 Windows 2008 R2 上建立連接時,您可以觀察到 SChannel 錯誤:
A fatal error occurred while creating an SSL server credential. The internal error state is 10013.
我還測試了在 Windows Server 2012 和 2012 R2 上禁用 TLS 1.0,我可以確認使用 Windows 7 RDP 客戶端可以正常工作。SChannel 日誌條目顯示正在使用 TLS 1.2:
An SSL server handshake completed successfully. The negotiated cryptographic parameters are as follows. Protocol: TLS 1.2 CipherSuite: 0xC028 Exchange strength: 256
我希望這對正在尋求澄清的人有所幫助。
我將繼續尋找如何讓 RDP 在 Windows Server 2008 R2 中通過 TLS 1.1 和 TLS 1.2 工作。
更新:2015-AUG-05
我們提出了 RDP 在 Microsoft 支持下無法與 Server 2008 R2 一起使用的問題,包括重現步驟。
經過幾週的來回折騰,我們今天終於接到了支持團隊打來的電話,承認他們確實可以重現它,現在這被歸類為錯誤。更新更新檔將發布,目前預計在 2015 年 10 月發布。一旦我有知識庫文章或其他詳細資訊,我會將它們添加到這篇文章中。
希望那些堅持使用 Windows Server 2008 R2 的人至少可以在更新檔發布後的 2016 年 6 月截止日期之前解決這個問題。
更新:2015 年 9 月 19 日
微軟終於在這裡發布了一篇關於此的 kb 支持文章,我可以確認它可以正常工作。