NGINX配置SSL双向认证

NGINX配置SSL双向认证

2023年7月10日发(作者:)

NGINX配置SSL双向认证对于 NGINX 的 HTTPS 配置,通常情况下我们只需要实现服务端认证就⾏,因为浏览器内置了⼀些受信任的证书颁发机构(CA),服务器端只需要拿到这些机构颁发的证书并配置好,浏览器会⾃⼰校验证书的可⽤性并通过 SSL 进⾏通讯加密。但特殊情况下我们也需要对客户端进⾏验证,只有受信任的客户端才能使⽤服务接⼝,此时我们就需要启⽤双向认证来达到这个⽬的,只有 当客户端请求带了可⽤的证书才能调通服务端接⼝ 。CA 与⾃签名CA 是权威机构才能做的,并且如果该机构达不到安全标准就会被浏览器⼚商“封杀”,前不久的沃通、StartSSL 就被 Mozilla、Chrome 封杀了。不过这并不影响我们进⾏双向认证配置,因为我们是⾃建 CA 的..为了⽅便,我们就在 NGINX 的⽬录下进⾏证书相关制作:cd /etc/nginxmkdir sslcd ssl制作 CA 私钥openssl genrsa -out 2048制作 CA 根证书(公钥)openssl req -new -x509 -days 3650 -key -out 注意:Common Name 可以随意填写其他需要填写的信息为了避免有误,都填写 . 吧服务器端证书制作服务端私钥openssl genrsa -out 1024openssl rsa -in -out ⽣成签发请求openssl req -new -key -out 注意:Common Name 得填写为访问服务时的域名,这⾥我们⽤ 下⾯ NGINX 配置会⽤到其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)⽤ CA 签发openssl x509 -req -sha256 -in -CA -CAkey -CAcreateserial -days 3650 -out 客户端证书和服务端证书类似:注意:Common Name可以随意填写其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)⾄此需要的证书都弄好了,我们可以开始配置 NGINX 了。 NGINXserver {listen 443 ssl;server_name ;access_log off;ssl on;ssl_certificate /etc/nginx/ssl/;ssl_certificate_key /etc/nginx/ssl/;ssl_client_certificate /etc/nginx/ssl/;ssl_verify_client on;location / { proxy_pass backend$request_uri;}}其中 ssl_client_certificate /etc/nginx/ssl/; 的意思是使⽤ CA 证书来验证请求带的客户端证书是否是该 CA 签发的。配置好后就就重新加载 NGINX 吧:service nginx reload好了,下⾯我们可以开始验证了。请求验证验证过程可以选择在其他机器或是本机,为了能够解析 ,还需要配置⼀下 /etc/hosts:127.0.0.1 如果⽤浏览器验证,需要把客户端证书导出成 p12 格式的,这⾥略过。我们重点是通过 curl 进⾏验证:400 No required SSL certificate was sent

400 Bad Request

No required SSL certificate was sent

nginx/1.11.0
这些报错版本的 curl 居然要严格要求 --cert 实参的路径要完全正确,⽐如当前⽬录下⾯要⽤ --cert ./,⽤ --cert 是错误的。爬坑过程是启⽤了 -v 参数来观察完整的过程,发现其中有⼀条告警:

发布者:admin,转转请注明出处:http://www.yc00.com/news/1688940682a186036.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信