双向 TLS 的最小配置
服务间通信想加双向认证,nginx 侧最小配置:
ssl_client_certificate /etc/nginx/ca.pem;
ssl_verify_client on;
ssl_verify_depth 2;
ssl_client_certificate 是签发客户端证书的 CA,不是客户端证书本身;ssl_verify_depth 限制链长度,设太小会拒掉合法的中间 CA。
几个实际会遇到的问题:
- 客户端证书过期不会自动续,服务间调用直接 400,需要有到期监控。
ssl_verify_client optional允许无证书访问,配合$ssl_client_verify做业务判断,比一刀切灵活。- 吊销用 CRL 要定期更新,nginx 不会自动拉;OCSP 对客户端证书支持有限。
再往上一层,双向 TLS 只解决“谁在连”,不解决“能做什么”,授权还得自己做。