本文介绍在 CentOS7 环境下,使用 Certbot 申请免费的 Lets Encrypt SSL 证书,并自动续期。
1. 环境准备
安装 Python3:
1 | yum install python3 |
安装 Certbot 和 Python 虚拟环境:
1 | # 假设certbot安装到/root/certbot |
阿里云注册并解析的域名,执行如下命令:
1 | # 安装certbot |
2. 阿里云子账号
创建阿里云子账号(https://ram.console.aliyun.com),并分配 AliyunDNSFullAccess 权限。
为子账号生成 access_key 和 access_secret。
创建/root/certbot/aliyun.ini
文件,内容如下:
1 | dns_aliyun_access_key = XXXXX |
使用如下命令修改该文件权限:
1 | chmod 600 /root/certbot/aliyun.ini |
3. 申请证书
以申请 mytools123.com 证书为例:
1 | /root/certbot/venv/bin/certbot certonly \ |
执行成功后,生成的证书位于/etc/letsencrypt/live/mytools123.com
目录
4. 手动续期
Lets Encrypt 的证书有效期只有 3 个月,到期后需要手动续期。
1 | # --dry-run 的是模拟更新证书 |
5. 自动续期
可以创建定时续期脚本,来实现自动续期。
创建脚本文件/root/renew_cert.sh
,内容如下:
1 | 更新证书 |
为 sh 添加可执行权限:
1 | chmod +x /root/renew_cert.sh |
新建定时任务:
1 | crontab -e |
新增如下内容:
1 | 0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && /root/renew_cert.sh |