Nginx+SSL实现双向认证的示例代码
首先创建一个目录
cd/etc/nginx mkdirssl cdssl
CA与自签名
制作CA私钥
opensslgenrsa-outca.key2048
制作CA根证书(公钥)
opensslreq-new-x509-days3650-keyca.key-outca.crt
注意:
1、CommonName可以随意填写
2、其他需要填写的信息为了避免有误,都填写.吧
服务器端证书
制作服务器端私钥:
opensslgenrsa-outserver.pem1024 opensslrsa-inserver.pem-outserver.key
生成签发请求:
opensslreq-new-keyserver.pem-outserver.csr
注意:
1、CommonName得填写为访问服务时的域名,这里我们用usb.dev下面NGINX配置会用到
2、其他需要填写的信息为了避免有误,都填写.吧(为了和CA根证书匹配)
用CA签发
opensslx509-req-sha256-inserver.csr-CAca.crt-CAkeyca.key-CAcreateserial-days3650-outserver.crt
客户端证书
与服务端证书类似
注意:
1、CommonName可以随意填写
2、其他需要填写的信息为了避免有误,都填写.吧(为了和CA根证书匹配)
至此需要的证书都弄好了,我们可以开始配置NGINX了。
Nginx配置
server{ listen443; server_nameusb.dev; indexindex.html; root/data/test/; sslon; 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_clienton; }
请求验证
验证过程可以选择在其他机器或是本机,为了能够解析usb.dev,还需要配置一下/etc/hosts:
ip地址usb.dev
如果用浏览器验证,需要把客户端证书导出成p12格式的
opensslpkcs12-export-clcerts-inclient.crt-inkeyclient.pem-outclient.p12
从服务器上将几个证书下载下来,然后安装到可信的证书列表,点击刚才生成的p12文件输入证书的密码将安装至个人列表。
然后关闭浏览器,重新输入域名,会出现ssl双向验证的证书提示。选择证书即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。