You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2021年9月使用Let's Encrypt出现SSL handshake failed错误问题

故障根因说明

该故障的直接触发原因是2021年9月30日Let's Encrypt旧根证书DST Root CA X3正式过期,结合Qt SSL校验的特有逻辑导致握手失败,具体逻辑如下:

  • Let's Encrypt当时为了最大程度兼容老旧设备,默认给服务端颁发的证书采用交叉签名方案:新证书既可以被新的可信根证书ISRG Root X1验证,也附带了已过期DST Root CA X3的交叉签名,服务端返回的SSL握手包的证书链末尾会携带该旧根证书
  • Qt的SSL校验逻辑存在特殊优先级规则:即使设备系统根证书库中已经存在有效的ISRG Root X1,Qt仍会优先校验证书链末尾的根证书,检测到DST Root CA X3已过期后直接判定证书无效,抛出SSL handshake failed错误

该故障完全匹配「客户端、服务端均无变更情况下突发报错」的场景:故障发生时间与旧根证书过期时间完全重合,且仅影响Qt开发的客户端,其他非Qt技术栈的客户端访问同一后端服务不会触发该错误。

常见修复方案

  • 客户端侧:将Qt版本升级至5.15.2、6.2.0及以上版本,上述版本已修复根证书校验优先级的缺陷;若无法升级Qt版本,可在代码中手动将ISRG Root X1加入可信证书列表,或配置SSL校验规则忽略已过期的DST Root CA X3证书
  • 服务端侧:调整证书配置,停止在证书链中附带已过期的DST Root CA X3,仅返回由ISRG Root X1签名的证书链即可解决问题

内容的提问来源于stack exchange,提问作者S.M.Mousavi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:24:00