一、自制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认证详解

最新文章

  1. angularJS(5)
  2. webuploader 断点续传
  3. 以代码爱好者角度来看AMD与CMD
  4. jquery.validate.js常用扩展函数
  5. VS活动解决方案平台
  6. Apache CXF实现Web Service(3)——Tomcat容器和不借助Spring的普通Servlet实现JAX-RS(RESTful) web service
  7. Windows Myeclipse 10 安装 Perl 插件
  8. javascript div跟随鼠标移动
  9. 【转】VS 代码行数统计
  10. Joel在耶鲁大学的演讲
  11. ListView与RadioButton组合——自定义单选列表
  12. Python学习日记day10------函数的命名空间、作用域与闭合函数
  13. RDD
  14. yum 安装时错误 Errno 14 Couldn't resolve host 解决办法
  15. [加密]openssl之数字证书签名,CA认证原理及详细操作
  16. 从零开始学 Web 之 jQuery(六)为元素绑定多个相同事件,解绑事件
  17. mongoDB oplog的说明及应用
  18. GridView Bind 短日期 格式
  19. 解决cef中title不现实tooltip的问题
  20. P2129 L国的战斗续之多路出击

热门文章

  1. redis sentinel 部署
  2. Django里ORM常用关键字
  3. LCP 03.机器人大冒险
  4. 添加matlab到右键菜单并从当前目录打开
  5. java中Atomic变量的实现原理是怎样的?
  6. MOBI 】逆流而上的我:重塑心理韧性,在逆境中实现自我超越【早稻田大学名誉教授、哈佛大学客座研究
  7. Win7+VS2010 环境配置
  8. notepad++解决粘贴复制代码行数问题
  9. ptyhon基础课程_4
  10. PyTorch Geometric(pyg)学习