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

双向 TLS(mTLS)

服务端除出示证书外还要求客户端提供证书并校验其链与吊销状态,用于内部服务、设备接入与零信任场景;配置时需要客户端 CA 信任链。

加密与证书速查安全更新于 2026-10-12
关键配置ssl_client_certificate(CA 链)、ssl_verify_client on/optional
验证内容客户端证书链、有效期、吊销状态(CRL/OCSP 可选)
传递身份校验通过后把主体信息传给后端(如 $ssl_client_s_dn)
注意客户端证书轮换与吊销是运维重点

nginx mTLS 配置片段

nginx mTLS 配置片段
ssl_client_certificate /etc/nginx/ca/client-ca.crt;
ssl_verify_client on;
ssl_verify_depth 2;
proxy_set_header X-Client-DN $ssl_client_s_dn;
proxy_set_header X-Client-Verify $ssl_client_verify;
使用 ssl_verify_client optional 时后端必须自行判断 $ssl_client_verify,否则未认证请求也可能被放行。

易错点

  • 客户端 CA 与证书用途(EKU 中的 clientAuth)不匹配时校验会失败
  • 证书吊销依赖 CRL/OCSP 时可用性风险高,建议结合短有效期与白名单

数据来源与参考

  • RFC 8446 §4.4.2(CertificateRequest)
  • nginx 官方文档 ssl_verify_client
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌