美文网首页
HTTPS升级

HTTPS升级

作者: david161 | 来源:发表于2022-07-29 14:48 被阅读0次

    Let's Encrypt

    Let's Encrypt —— 是一个由非营利性组织互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA),简单的说,就是为网站提供免费的 SSL/TLS 证书。互联网安全研究小组(ISRG):ISRG是美国加利福尼亚州的一家公益公司,成立于2013年5月,第一个项目是Let's Encrypt证书颁发机构。
    Let’s Encrypt 使用 ACME 协议来验证您对给定域名的控制权并向您颁发证书。要获得 Let’s Encrypt 证书,您需要选择一个要使用的 ACME 客户端软件。
    Let’s Encrypt 不控制或审查第三方客户端,也不能保证其安全性或可靠性。官方推荐使用 Certbot 客户端来签发证书,官网:

    https://certbot.eff.org/
    

    ACME协议:
    Automatic Certificate Management Environment=ACME,自动认证管理
    环境协议
    ACME协议的基本思路是:
    在你服务器上生成一次性的随机特征数据(nonce),然后通过Let’s Encrypt的服务器核对这个数据,核对成功发放证书。
    使用前提:
    域名,它会生成指定域名的证书
    在域名指向的服务器上能访问https
    Linux环境

    环境准备

    Certbot的两种工作方式:

    1. Standalone 方式:
      certbot 会自己运行一个 web server 来进行验证。如果我们自己的服务器上已经有 web server 正在运行 (比如 Nginx 或 Apache ),用 standalone 方式的话需要先关掉它,以免冲突。
    2. Web root 方式:
      certbot 会利用既有的 web server,在其 web root目录下创建隐藏文件,Let’s Encrypt 服务端会通过域名来访问这些隐藏文件,以确认你的确拥有对应域名的控制权。
      1)安装Nginx,Nginx位于第三方的yum源里面,而不在Centos官方yum源里面
    #安装RHEL 
    sudo yum install epel-release 
    #yum更新 
    yum update 
    yum install -y nginx
    

    2)安装wget

    yum -y install wget
    

    3)下载Certbot客户端

    #下载 
    wget https://dl.eff.org/certbot-auto 
    #添加执行权限 
    chmod a+x ./certbot-auto
    

    4)编辑nginx的配置文件

    server {
        listen 80 default_server; 
        listen [::]:80 default_server; 
        #1.配置合法域名 
        server_name yuanjing.com; 
        #2.配置应用根目录 
        root /usr/share/nginx/html; 
        # Load configuration files for the default server block. 
        include /etc/nginx/default.d/*.conf; 
    
        location / {      
        }
        
        error_page 404 /404.html; 
        location = /404.html { 
        }
        
        error_page 500 502 503 504 /50x.html; 
        location = /50x.html { 
        } 
    }
    
    生成并配置证书

    1)使用certbot-auto命令,生成证书

    #域名必须真实有效 
    ./certbot-auto certonly --webroot --email yuanjing@lagou.com 
    -w /usr/share/nginx/html/ -d [填写合法域名的地址]
    

    2)生成的证书放在/etc/letsencrypt/live/[网站域名]下
    例如:/etc/letsencrypt/live/yuanjing.com


    image.png

    一般情况下fullchain.pem和privkey.pem就够用了

    [centos@yuanjing ~]$ tree /etc/letsencrypt/ 
    ...... 
    ├── live 
    │ └── yuanjing.com (别名,最终,看自己域名) 
    │ ├── cert.pem -> ../../archive/yuanjing.com/cert1.pem 
    │ ├── chain.pem -> ../../archive/yuanjing.com/chain1.pem 
    │ ├── fullchain.pem -> ../../archive/yuanjing.com/fullchain1.pem 
    │ ├── privkey.pem -> ../../archive/yuanjing.com/privkey1.pem 
    │ └── README 
    ......
    

    3)配置nginx支持https访问

    server {
            listen 443 ssl http2; 
            server_name yuanjing.com;
            ssl_certificate "/etc/letsencrypt/live/yuanjing.com/fullchain.pem"; 
            ssl_certificate_key "/etc/letsencrypt/live/yuanjing.com/privkey.pem"; 
            include /etc/nginx/default.d/*.conf; 
    
            location / { 
                root /usr/share/nginx/html; 
                index index.html; 
            }
            
            error_page 404 /404.html; 
            location = /40x.html { 
            }
            
            error_page 500 502 503 504 /50x.html; 
            location = /50x.html { 
            } 
        } 
    }
    

    4)http 跳转到 https
    在网站在访问http时都会将http请求重定向到https,只需在nginx中配置下。配置如下

    server {
            listen 80 default_server; 
            server_name yuanjing.com www.yuanjing.com; 
            return 301 https://$server_name$request_uri; 
    }
    

    5)重启Nginx后生效
    nginx -s reload

    更新证书

    默认证书有效期是3个月,所以需要续期。
    设置每月1日的凌晨3点就会执行一次所有域名的续期操作

    #创建定时任务 
    sudo crontab -e 
    #设置定时策略 
    #/home/ubuntu/soft/certbot-auto:certbot所在的目录 
    0 3 1 * * /home/ubuntu/soft/certbot-auto renew --renew-hook 
    "sudo nginx -s reload" 
    #查看一下是否存在刚才添加的定时命令 
    sudo crontab -l
    

    阿里云SSL证书

    证书类型

    阿里云SSL证书提供DV证书、OV证书和EV证书三种类型。


    image.png

    证书选型案例:


    image.png
    申请证书

    4步申请证书,DV最快5~10分钟签发,OV/EV最快2个工作日签发。


    image.png

    下表列出了不同类型证书需要提交的材料,其中用到的标识:
    x:表示无需提供该材料。
    √:表示需要提供该材料。


    image.png
    阿里云SSL证书购买:
    https://common-buy.aliyun.com/?spm=5176.1508937
    5.5806769250.1.5f751232rDgsdh&commodityCode=cas#/buy
    
    image.png
    下载证书

    阿里云SSL证书支持安装到以下类型的Web服务器:
    Tomcat
    Apache
    Nginx
    IIS
    GlassFish
    JBoss
    Jetty

    1. 登录阿里云SSL证书控制台。
    2. 在SSL证书页面,定位到需要下载的证书并单击证书卡片右下角的下载。


      image.png
    3. 定位到您需要安装证书的服务器类型并单击右侧操作栏的下载,将证书压缩包下载到本地。
    在Nginx或Tengine服务器上安装证书
    1. 登录阿里云SSL证书控制台。
    2. 在左侧导航栏,单击概览。
    3. 在SSL证书页面,定位到需要下载的证书实例,单击下载。
    4. 在证书下载页面,定位到Nginx服务器,单击右侧操作列的下载,将Nginx服务器证书压缩包下载到本地。
    5. 解压已下载保存到本地的Nginx证书压缩包文件。
      解压后的文件夹中有2个文件:
      证书文件:文件类型为PEM。
      密钥文件:文件类型为KEY。


      image.png
    6. 登录您的Nginx服务器,在Nginx安装目录(默认为/usr/local/nginx/conf)执行以下命令,创建cert目录:
    cd /usr/local/nginx/conf 
    #进入Nginx默认安装目录。此处为Nginx默认 安装目录,请您根据实际配置情况操作。 
    mkdir cert 
    #创建cert证书目录。
    
    1. 使用远程登录工具(例如PuTTY或者Xshell)附带的本地文件上传功能,将下载的证书文件和密钥文件上传到Nginx服务器的cert目录下。
    2. 执行以下命令,打开Nginx安装目录/conf/nginx.conf配置文件并进行编辑。
    vim /usr/local/nginx/conf/nginx.conf 
    #打开配置文件。此处为Nginx 默认配置文件目录,请您根据实际配置情况操作。
    

    按i键进入编辑模式,在配置文件中找到HTTP协议代码片段,在HTTP协议代码里面新增以下server配置示例。如果server配置已存在,按照以下注释内容修改相应的配置即可。

    
    

    配置文件修改完毕之后,按Esc键后输入:wq!,然后按Enter键保存修改的配置文件并退出编辑模式。

    1. 执行以下命令,重启Nginx服务器。
    cd /usr/local/nginx/sbin #进入Nginx服务器的可执行目录sbin。 
    ./nginx -s reload #重启Nginx服务器。
    
    1. 可选:设置HTTP请求自动跳转HTTPS。
      在需要跳转的HTTP站点下添加以下return语句,实现HTTP访问自动跳转到HTTPS页面。
    server { 
        listen 443 ssl; 
        #将www.certificatestests.com修改为您证书绑定的域名,例如: www.example.com。 
        server_name www.certificatestests.com; 
        #将所有HTTP请求通过return重定向到HTTPS。 
        return 301 https://$server_name$request_uri; 
        location / { 
            index index.html index.htm; 
        }
     }
    
    1. 证书安装完成后,您可通过登录证书的绑定域名验证该证书是否安装成功。
      DV SSL、OV SSL数字证书部署在服务器上后,您的浏览器访问网站时,展示以下效果:


      image.png

      证书安装完成后,异常现象的处理方法,请参见下表:


      image.png

    相关文章

      网友评论

          本文标题:HTTPS升级

          本文链接:https://www.haomeiwen.com/subject/ddgtwrtx.html