zoukankan      html  css  js  c++  java
  • nginx 之 https 证书配置

    HTTPS原理和作用

    为什么需要HTTPS

    原因:HTTP不安全

    • 传输数据被中间人盗用、信息泄露
    • 数据内容劫持、篡改

    HTTPS协议的实现

    对传输内容进行加密以及身份验证

    对称加密:加密秘钥和解密秘钥是对等的,一样的

    非对称加密:

    HTTPS加密协议原理:

     

    中间人伪造客户端和服务端:(中间人可以伪装成客户端和服务端,中间人可以对数据进行劫持,不安全

    HTTPS的CA签名证书:(服务端和客户端通过实现约定好的证书进行认证,都会对证书进行校验,所以中间人没法劫持数据,故安全

     

    HTTPS 配置使用

    证书签名生成CA证书

    先确认环境:已经安装openssl和nginx已经编译ssl的模块

    openssl version
    

    nginx -V
    

    rpm -qa | grep open
    

      

    生成秘钥和CA证书步骤:

    步骤1、生成key秘钥

    步骤2、生成证书签名请求文件(csr文件)

    步骤3、生成证书签名文件(CA文件)

    证书签名生成和Nginx的HTTPS服务场景演示

     先创建一个用来放秘钥的文件夹 ssl_key

    cd /etc/nginx/
    mkdir ssl_key
    

    输入加密算法

    openssl genrsa -idea -out jesonc.key 1024
    

     

     回车,会让输入密码,这里设置为123456,完成后会生成一个.key的文件

     

    生成证书签名请求文件(csr文件)

    openssl req -new -key jesonc.key -out jesonc.csr
    

    查看生成的请求文件

    生成证书签名文件(CA文件) 打包 有效期设置了 10 年

    openssl x509 -req -days 3650 -in jesonc.csr -signkey jesonc.key -out jesonc.crt
    

     Nginx的HTTPS语法配置

    ssl开关
    配置语法:ssl on|off;
    默认状态:ssl off;
    配置方法:http、server
    
    ssl证书文件
    配置语法:ssl_certificate file;
    默认状态:-
    配置方法:http、server
    
    ssl密码文件
    配置语法:ssl_certificate_key file;
    默认状态:ssl off;
    配置方法:http、server
    

      

    进入/etc/nginx/conf.d/

    test_https.conf

    server
     {
       listen       443;# https 监听的是 443端口
       server_name  192.168.1.112 www.zhangbiao.com;
    
       keepalive_timeout 100;
    
       ssl on;
       ssl_session_cache   shared:SSL:10m;
       ssl_session_timeout 10m;
    
       ssl_certificate /etc/nginx/ssl_key/jesonc.crt; # 证书路径
       ssl_certificate_key /etc/nginx/ssl_key/jesonc.key; # 请求认证 key 的路径
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    

     

     配置好之后,关闭和启动,都需要数之前设置的密码

    关闭

    nginx -s stop -c /etc/nginx/nginx.conf
    

    启动 

    nginx -c /etc/nginx/nginx.conf

    访问

    https://www.zhangbiao.com/index.html
    

    基于Nginx的HTTPS服务_实战场景配置苹果要求的openssl后台HTTPS服务

    配置苹果要求的证书:  

    • 1、服务器所有的连接使用TLS1.2以上的版本(openssl 1.0.2)
    • 2、HTTPS证书必须使用SHA256以上哈希算法签名
    • 3、HTTPS证书必须使用RSA2048位或ECC256位以上公钥算法
    • 4、使用前向加密技术

    首先看openssl版本:,为1.0.1,需要升级 

    查看当前使用的自签算法类型:openssl x509 -noout -text -in ./jesonc.crt,使用的是sha256,位数是1024位,都不符合规定  

    openssl x509 -noout -text -in ./jesonc.crt
    

      

    升级openssl,使用shell脚本升级

    update_openssl.sh

    #!/bin/sh
    #jeson@imoocc.com
    cd /opt/download
    wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
    tar -zxvf openssl-1.0.2k.tar.gz
    cd openssl-1.0.2k
    ./config --prefix=/usr/local/openssl 
    make && make install 
    mv /usr/bin/openssl /usr/bin/openssl.OFF 
    mv /usr/include/openssl /usr/include/openssl.OFF 
    ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 
    ln -s /usr/local/openssl/include/openssl /usr/include/openssl 
    echo "/usr/local/openssl/lib" >>/etc/ld.so.conf 
    ldconfig -v
    openssl version -a
    

    执行脚本  

    sh ./update_openssl.sh
    

    版本升级成功,查看版本

    openssl version
    

    制作复合苹果的证书

    修改算法

    openssl req -days 36500 -x509 -sha256 -nodes -new^Cy rsa:2048 -keyout jesonc_apple.crt
    

    修改配置文件  

    test_https.conf  

    server
     {
       listen       443;
       server_name  192.168.1.112 www.zhangbiao.com;
    
       keepalive_timeout 100;
    
       ssl on;
       ssl_session_cache   shared:SSL:10m;
       ssl_session_timeout 10m;
    
       ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt;
       ssl_certificate_key /etc/nginx/ssl_key/jesonc.key;
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    

    检查配置语法,并重载

    nginx -tc /etc/nginx/nginx.conf 
    nginx -s reload -c /etc/nginx/nginx.conf
    

     

    查看443端口是否启动

    netstat -luntp | grep 443
    

      

    访问

    https://www.zhangbiao.com/index.html
    

     成功返回地页面

     

    HTTPS 服务优化

    方法一:

      激活keepalive 长连接

    方法二:

      设置 session 缓存

     test_https.conf

    server
     {
       listen       443;
       server_name  116.62.103.228 jeson.t.imooc.io;
    
       keepalive_timeout 100; # 长连接 100s
    
       ssl on;
       ssl_session_cache   shared:SSL:10m; # 设置 10M 的缓存
       ssl_session_timeout 10m; # session 过期时间 10 分钟
    
       ssl_certificate /etc/nginx/ssl_key/jesonc_apple.crt;
       ssl_certificate_key /etc/nginx/ssl_key/jesonc.key;
    
       index index.html index.htm;
       location / {
           root  /opt/app/code;
       }
    }
    

      

      

  • 相关阅读:
    基于kubernetes v1.17部署dashboard:v2.0-beta8
    kubeadm快速部署Kubernetes单节点
    kafka数据可靠性深度解读
    MySql中4种批量更新的方法
    如何分析Mysql慢SQL
    企业级SSD市场接口之争:SATA会被NVMe取代吗?
    强势回归,Linux blk用实力证明自己并不弱!
    影响性能的关键部分-ceph的osd journal写
    文章汇总(包括NVMe SPDK vSAN Ceph xfs等)
    NVMe over Fabrics:概念、应用和实现
  • 原文地址:https://www.cnblogs.com/crazymagic/p/11042333.html
Copyright © 2011-2022 走看看