Let’s Encripty介绍

Let’s Encrypt是一个非盈利的,免费的CA,可以提供免费HTTPS认证服务。

提供了一套完整的工具,基于这套工具,我们可以免费来搭建HTTPS 网站。

详情参考:https://letsencrypt.org/

国内有许多机构可以提供免费的SSL证书,但是一般只有一年的免费服务,而且基于cron可以实现定时更新证书,从而实现永久免费的目的

Let’s Encrypt部署HTTPS服务

  1. 安装python2.7,参考《python2.7安装与配置》
  2. 安装Certbot

Certbot是一个命令行工具,用于从Let's Encrypt证书颁发机构获得免费的SSL证书。它允许你请求一个新的SSL证书,做授权和配置你的Web服务器的SSL设置,你也可以为其他服务获得SSL证书,如邮件服务器,代理和VPN服务器,注意Certbot是用Python写的,官方建议Python2.7及其以上环境

cd /root/soft
wget https://codeload.github.com/certbot/certbot/zip/refs/tags/v1.10.1 -O certbot-1.10.1.zip
unzip certbot-1.10.1.zip
cd certbot-1.10.1
chmod +x certbot-auto
./certbot-auto --help all
  1. 生成证书
./certbot-auto certonly --nginx --renew-by-default --email [email protected] -d www.appos

完成Let's Encrypt证书的生成之后,我们可以在/etc/letsencrypt/live/看到生成的密钥证书文件

cert.pem Apache服务器端证书
chain.pem Apache根证书和中继证书
fullchain.pem Nginx所需要ssl_certificate文件
privkey.pem 安全证书KEY文件,对应nginx ssl_certificate_key指令
  1. 配置nginx https证书
server {
    listen 443 ssl;
    server_name www.apposs.cloud apposs.cloud;
    # 配置ssl证书
    ssl_certificate /etc/letsencrypt/live/www.apposs.cloud/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.apposs.cloud/privkey.pem;
    location / {
        # 转发的后端服务,在上面的upstream要提前配置好
        proxy_pass http://ungx-all;
        # 配置转发header信息
        proxy_set_header Host $host;
        proxy_set_header X-HTTPS $https;
        set $real_ip $remote_addr;
        if ($http_x_forwarded_for != '') {
            set $real_ip $http_x_forwarded_for;
        }
        proxy_set_header X-Real-IP $real_ip;
        proxy_set_header X-Forwarded-For $real_ip;
    }
}

重启nginx,访问

  1. 对证书安全性进行测试

https://www.ssllabs.com/ssltest/analyze.html 访问这个网址,输入域名 https://www.apposs.cloud 就可以进行测试

  1. 续约
/root/soft/certbot-1.10.1/certbot-auto renew --force-renewal --no-self-upgrade --post-hook "killall -HUP nginx"
  1. 定时任务自动续约

规定每月的5号执行更新

crontab -e
00 05 01 * * /root/soft/certbot-1.10.1/certbot-auto renew --force-renewal --no-self-upgrade --post-hook "killall -HUP nginx" >> /root/logs/certbot/certbot.log 2>&1

参考链接: