设为首页 收藏本站
查看: 1061|回复: 0

[经验分享] nginx 配置https双向信任

[复制链接]

尚未签到

发表于 2018-11-16 07:13:19 | 显示全部楼层 |阅读模式
  1.前期的准备工作:
  安装openssl和nginx的https模块
  cd  ~/
  mkdir ssl
  cd ssl
  mkdir demoCA
  cd demoCA
  mkdir newcerts
  mkdir private
  touch index.txt
  echo '01' > serial
  2.制作CA证书(这个是信任的起点,根证书,所有其他的证书都要经过CA的私钥签名)。
  生成 CA私钥: ca.key
  命令:openssl genrsa -des3 -out ca.key 2048
  这样是生成rsa私钥,`des3`算法,openssl格式,2048位强度。`ca.key`是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。
  另外可以通过以下方法生成没有密码的key:
  openssl rsa -in ca.key -out ca_decrypted.key
  生成 CA根证书的公钥 ca.crt:
  openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
  3.      制作网站的https证书,并用CA签名认证。
  假设我们需要为 test.com 域名制作证书,先生成 test.com的证书私钥 test.com.pem。
  命令:
  openssl genrsa -des3 -out test.com.pem 1024
  生成无密码的私钥:
  openssl rsa -in test.com.pem -out test.com.key
  生成 csr 签名请求:
  openssl req -new -key test.com.pem -out test.com.csr
  这里需要输入国家,地区,组织,email等。最重要的是**common name**,可以写你的名字或者域名。如果为了 https 申请,这个必须和域名一样,即,这里要写test.com,否则会引发浏览器警报,这里可以用 *.test.com 来做泛域名证书。
  最后要用CA证书进行签名:
  openssl ca -policy policy_anything -days 1460 -cert ./demoCA/ca.crt -keyfile ./demoCA/ca.key -in test.com.csr -out test.com.crt
  把 ca.crt 的内容追加到 test.com.crt后面,因为有些浏览似乎不支持(可以不配置):
  cat demoCA/ca.crt>> test.com.crt
  4.制作客户端证书(跟制作网站的证书模式一样):
  准备客户端私钥:
  openssl genrsa -des3 -out clent.pem 2048
  生成客户端证书请求:
  openssl req -new -key client.pem -out client-req.csr
  CA签名客户端证书请求
  openssl ca -policy policy_anything -days 1460 -cert ca.crt  -keyfile ca.key -in client-req.csr -out client.crt
  客户端证书CRT转换为 PKCS #12格式(全称应该叫做 Personal Information Exchange,通常以 p12作为后缀):
  openssl pkcs12 -export -clcerts -in client.crt -inkey client.pem -out client.p12
  点击刚才生成的p12文件输入证书的密码将安装。
  5.      nginx配置
  server {
  listen 443;
  server_name test.com www.test.com;
  root html;
  index index.html index.htm;
  ssl on;                                     #开启ssl
  ssl_certificate  /PATH/TO/test.com.crt;    #服务器证书位置
  ssl_certificate_key /PATH/TO/test.com.key;  #服务器私钥
  ssl_client_certificate /home/zhangyong/key/ca.crt;     #CA证书用于验证客户端证书的合法性
  ssl_verify_client       on;                      #开启对客户端的验证
  ssl_session_timeout 5m;                        #session有效期,5分钟
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';       #加密算法
  ssl_prefer_server_ciphers on;
  location / {
  try_files $uri $uri/ =404;
  }
  }
  6.      将证书导入浏览器测试


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635536-1-1.html 上篇帖子: nginx启动python脚本 下篇帖子: CentOS MONO nginx 运行.net MVC3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表