首页/安全/加密与证书速查/双向认证(mTLS)排错
本包目录(305 条)
加密算法基础95 条
TLS 与 HTTPS60 条
证书与 PKI30 条OpenSSL 实战30 条证书运维排查49 条密钥管理41 条

双向认证(mTLS)排错

mTLS 失败集中在三处:客户端证书缺失或过期、服务端未信任其签发者、证书缺少 clientAuth 用途;用 s_client 携带客户端证书复现,可定位到服务端配置或客户端材料问题。

加密与证书速查安全更新于 2026-10-12
客户端验证s_client -cert / -key 携带客户端材料并观察 verify 输出
服务端配置ssl_client_certificate 指定信任的客户端 CA,ssl_verify_client 开启校验
用途约束客户端证书需要 clientAuth EKU 或被 CA 策略覆盖

复现客户端故障

复现客户端故障
openssl s_client -connect api.example.com:443 -servername api.example.com -cert client.pem -key client.key -CAfile ca.pem </dev/null 2>&1 | grep -i 'verify\|error\|certificate'

nginx 参考配置

nginx 参考配置
ssl_client_certificate /etc/nginx/ssl/client-ca.pem;
ssl_verify_client on;
# 可在日志格式中加入 $ssl_client_s_dn 记录主体
会话恢复会跳过部分证书请求交互,排错阶段建议先验证完整握手路径。

易错点

  • 客户端证书按服务器用途模板签发,缺少 clientAuth
  • 只更新服务端信任库,未同步分发客户端证书

数据来源与参考

  • RFC 8446 §4.4.2(证书请求)
  • nginx 官方文档(ssl_verify_client)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌