Nginx 配置https的单向或双向认证
一、自制https认证证书
1. 制作CA证书
A. 生成CA私钥:openssl genrsa -des3 -out ca.key 2048,注意要输入两次密码,若去除密码使用openssl rsa -in ca.key -out ca.key;
B. 生成请求文件:openssl req -new -key ca.key -out ca.csr -subj "/C=CN/ST=HuBei/L=WuHan/O=dev/OU=dev/CN=rhxy",注意有可能报错,原因是默认 -config /usr/ssl/openssl.cnf,通过openssl version -a查看配置;
C. 生成CA证书:openssl x509 -req -days 730 -in ca.csr -signkey ca.key -out ca.crt;
2. 制作Server端证书
A. 生成服务端私钥:openssl genrsa -des3 -out server.key 2048;
B. 生成服务端公钥:openssl rsa -in server.key -pubout -out server.pem;
C. 生成请求文件:openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=HuBei/L=WuHan/O=dev/OU=dev/CN=rhxy"
D. 生成服务端带有CA签名的证书:openssl x509 -req -days 730 -CA ca.crt -CAKey ca.key -CAcreateserial -in server.csr -out server.crt;
3. 制作Client端证书
A. 生成客户端私钥:openssl genrsa -des3 -out client.key 2048;
B. 生成客户端公钥:openssl rsa -in client.key -pubout -out client.pem;
C. 生成请求文件:openssl req -new -key client.key -out client.csr -subj "/C=CN/ST=HuBei/L=WuHan/O=dev/OU=dev/CN=rhxy"
D. 生成客户端带有CA签名的证书:openssl x509 -req -days 730 -CA ca.crt -CAKey ca.key -CAcreateserial -in client.csr -out client.crt;
注意:windows上安装的证书需要pfx/p12格式:openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx
4. 自签名证书和私有CA签名的证书区别
A. 自签名证书无法吊销,而私有CA签名的证书可以吊销;
二、配置单向认证
1. 放置服务端证书文件:涉及server.key、server.crt文件放入conf.d/cert目录下;
2. 更改nginx配置并重启:./nginx -s reload;
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name rhxy.com;
ssl_certificate conf.d/cert/server.crt;
ssl_certificate_key conf.d/cert/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
3. 测试:在谷歌浏览器地址栏中输入url访问,会弹出不安全连接的警告,点击忽略,继续访问,即可访问相应资源;
三、配置双向认证
1. 放置服务端证书文件:涉及server.key、server.crt、ca.crt文件放入conf.d/cert目录下;
2. 更改nginx配置并重启:./nginx -s reload;
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name rhxy.com;
ssl_certificate conf.d/cert/server.crt;
ssl_certificate_key conf.d/cert/server.key;
ssl_client_certificate conf.d/cert/ca.crt;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_verify_client on;
location / {
root html;
index index.html index.htm;
}
}
3. 导入客户端证书
A. 打开浏览器,找到设置->隐私设置和安全性->安全->管理证书,将client.pfx导入浏览器中;
B. 重启浏览器:导入成功后需要关闭浏览器再重启,然后访问会弹出提示,单击对应证书就可以正常访问了;
可参考:SSL/TLS认证详解
最新文章
- angularJS(5)
- webuploader 断点续传
- 以代码爱好者角度来看AMD与CMD
- jquery.validate.js常用扩展函数
- VS活动解决方案平台
- Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service
- Windows Myeclipse 10 安装 Perl 插件
- javascript div跟随鼠标移动
- 【转】VS 代码行数统计
- Joel在耶鲁大学的演讲
- ListView与RadioButton组合——自定义单选列表
- Python学习日记day10------函数的命名空间、作用域与闭合函数
- RDD
- yum 安装时错误 Errno 14 Couldn't resolve host 解决办法
- [加密]openssl之数字证书签名,CA认证原理及详细操作
- 从零开始学 Web 之 jQuery(六)为元素绑定多个相同事件,解绑事件
- mongoDB oplog的说明及应用
- GridView Bind 短日期 格式
- 解决cef中title不现实tooltip的问题
- P2129 L国的战斗续之多路出击