问题描述
使用DHE密钥交换密码套件之一时,我需要验证服务器是否正确处理了SUPPORTED_GROUPS扩展。 OpenSSL的s_client
有一个名为groups
的选项,它可以与EC组配合使用,但是每当我尝试从{{ 1}}。
例如:
Error with command: "-groups ffdhe2048"
我已经尝试过所有可以想到的关于大小写和名称的变体(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"
,FFDHE2048
等)。但是在源代码中,很明显dhe2048
。可悲的是,ffdh2048
没有ffdhe2048
像-list_curves
那样。
解决方法
首先要注意的是,在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用于密钥交换。