Nginx 配双向认证,用客户端证书卡住访客

双向认证是服务端反过来校验客户端证书。

先备齐 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
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容