OpenSSL 1.1.1 s_client配置TLS1.3仅psk_ke模式问题咨询
OpenSSL 1.1.1 配置TLS1.3纯psk_ke模式说明
核心结论
OpenSSL 1.1.1 原生s_client工具无对应命令行参数可直接禁用psk_dhe_ke模式,无法通过现有命令行参数实现纯psk_ke模式的Client Hello构造,该表现为版本默认设计导致,并非配置操作错误。
细节说明
-allow_no_dhe_kex参数的设计作用仅为将psk_ke模式追加到TLS1.3支持的PSK密钥交换列表,不会移除默认启用的psk_dhe_ke。OpenSSL 1.1.1中TLS1.3 PSK交换默认优先级为psk_dhe_ke高于psk_ke,官方未暴露调整两个模式启用状态、优先级的命令行配置项。- 关于Client Hello携带额外扩展字段的判断基本准确:只要Client Hello声明支持psk_dhe_ke,就需要(EC)DHE密钥交换相关协商参数,OpenSSL会自动携带
key_share、ec_point_formats扩展;同时psk_dhe_ke模式下需要服务端提供签名完成密钥交换认证,因此会自动带上signature_algorithms扩展。若仅使用psk_ke模式,这几个扩展无需携带,完全符合TLS1.3 RFC规范。
可行实现方案
OpenSSL 1.1.1版本下要实现仅发送psk_ke模式、移除相关DHE扩展的Client Hello,有两种可落地的路径:
- 修改OpenSSL源码后重新编译:定位TLS1.3 PSK密钥交换模式的定义列表,移除psk_dhe_ke的默认配置项,重新编译后的
s_client会默认只携带psk_ke模式,自动省略不需要的DHE相关扩展。 - 基于OpenSSL API开发定制客户端:在构造Client Hello的流程中,通过SSL回调过滤psk_dhe_ke密钥交换选项,同时手动移除不需要的扩展字段即可。
补充:即便是升级到OpenSSL 3.0及以上版本,官方依然没有提供对应命令行参数直接关闭psk_dhe_ke模式,仍需通过源码修改或定制开发实现该需求。
内容的提问来源于stack exchange,提问作者user2176903
相关产品推荐
相关产品推荐

