Let’s Encripty介绍
Let’s Encrypt是一个非盈利的,免费的CA,可以提供免费HTTPS认证服务。
提供了一套完整的工具,基于这套工具,我们可以免费来搭建HTTPS 网站。
详情参考:https://letsencrypt.org/
国内有许多机构可以提供免费的SSL证书,但是一般只有一年的免费服务,而且基于cron可以实现定时更新证书,从而实现永久免费的目的
Let’s Encrypt部署HTTPS服务
- 安装python2.7,参考《python2.7安装与配置》
- 安装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
- 生成证书
./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指令 |
- 配置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,访问
- 对证书安全性进行测试
https://www.ssllabs.com/ssltest/analyze.html 访问这个网址,输入域名 https://www.apposs.cloud 就可以进行测试
- 续约
/root/soft/certbot-1.10.1/certbot-auto renew --force-renewal --no-self-upgrade --post-hook "killall -HUP nginx"
- 定时任务自动续约
规定每月的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