使用 s_client 时是否可以将 SUPPORTED_GROUPS 扩展设置为 "ffdhe" 组之一?

Is it possible to set the SUPPORTED_GROUPS extension to one of the "ffdhe" groups when using s_client?

我需要验证服务器在使用 DHE 密钥交换密码套件之一时是否正确处理 SUPPORTED_GROUPS 扩展。 OpenSSL 的 s_client 有一个名为 groups 的选项,它可以很好地与 EC 组一起工作,但是每当我尝试从 rfc7919.

例如:

>openssl.exe version
OpenSSL 1.1.1g  21 Apr 2020

>openssl.exe s_client -host 127.0.0.1 -port 9012 -groups ffdhe2048 -cipher DHE-RSA-AES256-GCM-SHA384 -msg -debug
Error with command: "-groups ffdhe2048"

我已经尝试了所有我能想到的关于大小写和名称的变体(FFDHE2048dhe2048ffdh2048 等)。但在源代码中,它非常清楚 ffdhe2048。可悲的是,dhparam 没有 -list_curves,就像 ecparam.

首先要注意的是,在 supported_groups 扩展中发送 ffdhe 组仅与 OpenSSL 1.1.1 中的 TLSv1.3 连接相关。如果您使用的是 TLSv1.2 或更低版本,则会忽略任何 ffdhe 组。我提到这一点是因为您在上面的命令行中明确请求了 TLSv1.2 密码套件 DHE-RSA-AES256-GCM-SHA384。如果 TLSv1.3 最终被协商,这也将被忽略,所以这很好(但可能不是你想要发生的)。

很遗憾,OpenSSL 1.1.1 不支持 TLSv1.3 中的 ffdhe 组。 OpenSSL 3.0(截至撰写本文时目前处于 alpha 测试阶段)确实支持它。因此,如果我在 OpenSSL 3.0 中尝试您的命令行,那么它就可以工作。如果我为连接的服务器端设置 OpenSSL 3.0 s_server 实例,则会建立 TLSv1.3 连接并使用 ffdhe2048 进行密钥交换。