双向认证是服务端反过来校验客户端证书。
先备齐 CA 证书、服务端证书和客户端证书。
Nginx 里用 ssl_client_certificate 指向 CA 证书链、ssl_verify_client on 强制校验,ssl_verify_depth 限制链深度。
需要把证书身份传给后端时,用 $ssl_client_s_dn 塞进请求头。
只想要有则校验、没有也放行,把 on 换成 optional。
验证用 curl 带客户端证书,不带证书应当被拒。
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_client_certificate /etc/nginx/ssl/ca.crt;
ssl_verify_client on; # optional = 有则校验,没有也放行
ssl_verify_depth 2;
}
curl --cert client.crt --key client.key https://example.com
openssl s_client -connect example.com:443 -cert client.crt -key client.key
THE END






暂无评论内容