我们的信用卡处理商最近通知我们,自 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 吗?微软是否计划支持 TLS 1.1 或 TLS 1.2 上的 RDP?
注意:似乎有一种方法可以做到这一点配置服务器以使用 RDP 安全层但那禁用网络级身份验证,这似乎是以恶换恶。
更新 1:Microsoft 现已解决此问题。请参阅回答如下进行相关的服务器更新。
更新2:微软发布了有关SQL Server 对 PCI DSS 3.1 的支持。
答案1
微软于 2015 年 9 月 15 日发布了针对此问题的补丁
答案2
我已经研究这个问题好几天了,因为我们必须遵守 PCI-DSS 3.1,而该标准要求禁用 TLS 1.0。
我们也不想退回到 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 日志记录来查看会话打开时发生的情况的更多详细信息很有用。
您可以设置SChannel 日志记录通过将 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging 键更改为 5 并重新启动。
完成此操作后,您可以观察 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 年 8 月 5 日
我们向 Microsoft 支持部门提出了 RDP 无法与 Server 2008 R2 配合使用的问题,并提供了重现步骤。
经过几周的反复考虑,我们今天终于接到了支持团队的电话,确认他们确实可以重现该问题,现在将其归类为错误。更新补丁将发布,目前预计在 2015 年 10 月。一旦我有知识库文章或其他详细信息,我就会将它们添加到此帖子中。
希望那些使用 Windows Server 2008 R2 的用户至少能够在补丁发布后的 2016 年 6 月截止日期之前解决这个问题。
更新日期:2015 年 9 月 19 日
微软终于发布了有关此问题的知识库支持文章这里并且我可以确认它运行正常。
答案3
按照文档建议,使用 IPsec:“首先设置强加密会话(例如 IPsec 隧道),然后在安全隧道内通过 SSL 发送数据”
通过为 RDP 配置 TLS 来执行此操作的主要原因是防火墙策略很容易审核合规性(而不是证明大量注册表更改是合规的)并且 IPsec 在 Windows 中非常容易配置。
如果你恰好需要完全符合 B 套件的 IPSEC,那么使用 tls 1.0 是唯一可以应用适当证书长度的方法
答案4
您需要在 Windows 7 计算机和 Windows Server 2008 R2 服务器上安装 RDP 8.0,然后在本地计算机策略或组策略上启用 RDP 8.0。
这是 RDP 8.0 的 Microsoft KB。 https://support.microsoft.com/en-us/kb/2592687
完成后,您应该能够按照此技术文章中的说明通过编辑注册表来禁用计算机和服务器上的 TLS 1.0。 https://technet.microsoft.com/en-us/library/dn786418.aspx
安装 RDP 8.0 后,您还可以安装 RDP 8.1,但必须在安装 RDP 8.1 之前安装 RDP 8.0。RDP 8.0 包含客户端和服务器端协议组件,但 RDP 8.1 仅包含客户端。RDP 8.1 的 Microsoft KB 是 KB2830477。
我在我的一台 Windows 7 工作站上进行了这些更改,并测试了 RDP 连接,其中启用了“要求对远程(RDP)连接使用特定安全层”组策略设置并将其设置为“SSL(TLS 1.0)”,以确保它不会回退到 RDP 加密。
更新日期:2015 年 6 月 19 日:
我终于有机会在我们的一台 Windows Server 2008 R2 服务器上测试了这一点,它确实中断了与服务器的 RDP 连接。似乎 RDP 8.0 服务器端组件仅安装在 Windows 7 计算机上,而未安装在 Windows Server 2008 R2 服务器上。