预期的密码套件未显示在数据包跟踪中 - 握手失败

预期的密码套件未显示在数据包跟踪中 - 握手失败

首先我想说的是,我并不是网络或 Wireshark 方面的专家,但我有 Web 开发背景,特别是 .net 和 iis/windows 服务器。

我正在尝试在服务器的密码套件中添加几个密码。这是因为我连接的服务器对其密码进行了修补,并要求人们使用添加的这些密码连接到它们。当我连接到它们时,我目前遇到了 TLS 握手失败。

在此处输入图片描述

这些是我需要的:

ECDHE-RSA-AES128-GCM-SHA256(OpenSSL) - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
ECDHE-RSA-AES256-GCM-SHA384(OpenSSL) - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA

我添加了等效的密码套件,这应该是我真正需要的。

尽管我添加了它们(使用 gpedit.msc 和 iiscrypto),并将它们放在整个密码列表的第一部分,但当我在 Wireshark 中跟踪它时它似乎没有显示出来。

加密 在此处输入图片描述 更新:上图中的密码已更改TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

SSL 密码套件订单

TLS__ECDHE_RSA_AES128_GCM_SHA256,TLS_ECDHE_RSA_AES256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_CBC_SHA

Wireshark 跟踪3 个突出显示的密码未出现在轨迹上 在此处输入图片描述 造成这种情况的常见原因有哪些?

更新:确认服务器接受通过 nmap 请求的密码。

| ssl-enum-ciphers:
|   TLSv1.2:
|     ciphers:
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A

答案1

我认为您的问题是基于对 TLS 握手方式以及特别是密码选择的工作原理以及您在网络上可以看到的内容的误解。

密码选择由客户端发送客户端接受的密码列表,然后服务器从该客户端提供的密码中选择一个密码来完成。这意味着只有客户端可接受的密码才会包含在 TLS 握手中。服务器可接受的密码列表不包含在握手中,这就是您看不到它的原因。

您只能使用仅提供此特定密码的客户端配置来获取服务器支持的密码。如果服务器接受该密码,它将支持它,否则它(很可能)不会支持它。这正是您使用的 nmap 命令所做的 - 只是尝试大量不同的密码并检查握手是否成功。

答案2

如果您谈论的是用于 SSL/TLS 的密码,则需要针对 Windows 进行适当的配置。如果它们在协商过程中没有显示,则可能是您没有正确配置。

您需要配置客户端和/或服务器来支持它们:

  1. 常规 SChannel 密码信息: https://docs.microsoft.com/en-us/windows/win32/secauthn/cipher-suites-in-schannel
  2. 通过策略配置它们: https://docs.microsoft.com/en-us/windows-server/security/tls/manage-tls

如果您熟悉 Linux,这里有一篇关于使用 nmap 将 SSL/TLS 密码协商输出到控制台的详细文章: https://medium.com/@rootsecdev/configuring-secure-cipher-suites-in-windows-server-2019-iis-7d1ff1ffe5ea

造成这种情况的常见原因是什么?...配置错误。要么您一开始就没有正确设置,要么设置被某些东西覆盖(例如组策略、某些安全产品)等。

相关内容