怎么在Nginx中利用SSL实现双向认证?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
首先创建一个目录
cd /etc/nginx mkdir ssl cd ssl
CA与自签名
制作CA私钥
openssl genrsa -out ca.key 2048
制作 CA 根证书(公钥)
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
注意:
1、Common Name 可以随意填写
2、其他需要填写的信息为了避免有误,都填写 . 吧
服务器端证书
制作服务器端私钥:
openssl genrsa -out server.pem 1024 openssl rsa -in server.pem -out server.key
生成签发请求:
openssl req -new -key server.pem -out server.csr
注意:
1、Common Name 得填写为访问服务时的域名,这里我们用 usb.dev 下面 NGINX 配置会用到
2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)
用CA签发
openssl x509 -req -sha256 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
客户端证书
与服务端证书类似
注意:
1、Common Name可以随意填写
2、其他需要填写的信息为了避免有误,都填写 . 吧(为了和 CA 根证书匹配)
至此需要的证书都弄好了,我们可以开始配置 NGINX 了。
Nginx配置
server { listen 443; server_name usb.dev; index index.html; root /data/test/; ssl on; 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; }
请求验证
验证过程可以选择在其他机器或是本机,为了能够解析 usb.dev,还需要配置一下 /etc/hosts:
ip地址 usb.dev
如果用浏览器验证,需要把客户端证书导出成 p12 格式的
openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12
关于怎么在Nginx中利用SSL实现双向认证问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。