SSL/TLS 1.2握手失败(ACCEPT_SR_KEY_EXCH)问题排查求助
协议版本协商冲突:日志中同时出现TLSv1.2和TLSv1.3,说明两端协议版本配置存在不兼容。服务器大概率同时开启了TLSv1.2和TLSv1.3,客户端虽计划用TLSv1.2,但可能优先发起TLSv1.3握手请求;某一端对TLSv1.3的支持存在兼容性缺陷(比如客户端仅部分支持TLSv1.3特性,或服务器TLSv1.3配置有遗漏),导致握手失败后触发重试,来回切换协议版本,进而重复执行Client Hello到Server Hello Done的流程。
密钥交换算法不兼容:报错代码
error:140370E5指向ACCEPT_SR_KEY_EXCH环节失败,说明服务器发送Server Key Exchange消息后,客户端无法处理对应的密钥交换算法。虽然两端各自能和其他SSL/TLS节点正常连接,但双方支持的密钥交换算法无交集(比如服务器仅支持ECDH的特定曲线,客户端未配置该曲线;或客户端对RSA密钥长度的限制与服务器证书不匹配),导致密钥交换无法完成,触发握手重试。证书链配置不完整:服务器持有ZeroSSL的有效证书,但可能未正确配置对应的中间证书链。客户端单独连接其他服务器时,对方已完整配置证书链,而此服务器缺少中间证书,导致客户端无法完成证书链信任验证,进而在密钥交换前终止握手,引发重复握手流程。
会话缓存机制干扰:两端SSL会话缓存可能存在异常,比如客户端尝试复用之前缓存的TLSv1.3会话信息连接服务器,但服务器不认可该会话;或缓存的会话版本与当前协商版本不匹配,导致握手流程反复发起却无法完成。
内容的提问来源于stack exchange,提问作者Semen Shekhovtsov

