← 中文资源

简体中文版本

排查双向 TLS 握手失败

用 openssl s_client 校验客户端证书链与密码套件协商,定位双向 TLS 间歇性握手失败。

阅读英文原文

目标

服务网格升级后开始拒绝部分调用并报握手错误,但只影响一个工作负载,怀疑其客户端证书过期。本配方用 openssl 主动发起带客户端证书的握手,打印协商协议与证书链,检查有效期,并比对服务端与客户端的密码套件,从而定位是证书过期还是套件不匹配。

步骤要点

  1. 用 openssl s_client 携带客户端证书发起握手并打印链路。
  2. 检查客户端证书有效期,识别是否过期。
  3. 比对服务端与客户端支持的密码套件并取交集。
  4. 续期证书后重跑握手验证通过。
openssl s_client -connect api.example.com:443 \
  -cert client.crt -key client.key -CAfile ca.pem -showcerts </dev/null

排错提示

  • 部分客户端只有收到挑战后才发送证书。
  • 套件不匹配需要双方对齐。
  • 私钥需安全保管。

适用边界

  • 只覆盖握手层,不覆盖应用层授权。
  • 不包含证书自动轮换。