我有一个关于 DTLS 和 Windows 的非常具体的问题,但在 Google 上似乎找不到。我们公司最近决定禁用 TLS 的特定密码套件,只允许使用最安全的密码套件,这是我们的列表:
TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
这是通过以下 GPO 配置的:
计算机配置 > 策略 > 管理模板 > 网络 > SSL 配置设置 > SSL 密码套件顺序。
看起来运行良好。我们不得不修复一些与旧服务器和应用程序不兼容的问题。
在一种情况下,用户无法通过远程网关进行 RDP。我们确定问题出在密码套件上,并将其恢复为默认值。查看 wireshark 捕获后,我们发现与 RDP 网关的连接最初通过 443 连接,并使用上述密码套件一切正常,但随后它转换为通过 UDP 端口 3391 的 DTLS 连接。DTLS 连接的客户端报告它支持密码:
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
但是当这些被禁用时,它就不起作用了。那么第一,为什么客户端说它只能使用 CBC 密码而不是 GCM 密码,即使启用了 GCM 密码?
我唯一能想到的是数据包报告 DTLS 版本为 1.0。CBC 密码适用于 TLS 1.0,而 GCM 密码不适用。但我们在客户端上也禁用了 TLS 1.0 和 1.1,并且我们没有重新启用它来让客户端正常工作。
第二个问题,有没有办法在 Windows 中设置专门影响 DTLS 的配置?比如,如果我想修复这个问题并强制服务器使用 DTLS 1.2 或其他密码套件,我该怎么做?