背景
域名代理商:腾讯云
服务器:ubuntu22
前置条件
安装docker
sudo apt install docker-compose-v2
安装certbot
sudo snap install --classic certbot
获取SSL证书
生成泛域名证书,以example为例
certbot certonly --manual --preferred-challenges dns -d *.example.com -d example.com
Certbot 会要求你在 DNS 中创建一个特定的 TXT 记录 记录以验证域名的所有权
大概等几十秒钟,确保 DNS 记录在全网传播开来,Certbot 可以查询到。
Certbot 在执行验证时会发起 DNS 查询,如果能找到所需的 TXT 记录并验证其值,认证就会成功,然后就会颁发证书。证书颁发后,这条 TXT 记录 就可以删除了。
自动续期
仅支持使用腾讯云的DNS实现自动续期,如果要支持其他厂商的DNS,请修改dnspod.sh脚本以适配
只有当前在机器上申请了证书才能在当前机器执行续期操作
前置条件
拉取腾讯云 CLI 工具docker镜像,我们使用docker镜像中的命令开箱即用避免复杂的安装流程
docker pull tencentcom/tencentcloud-cli
tccli安装和使用参考
https://cloud.tencent.com/product/cli
使用方法
- git clone https://github.com/starstao/certbot-auto-renew 或者进入此链接下载并解压
- cd certbot-auto-renew
- 编辑dnspod.env文件,填写腾讯云的API鉴权密钥,申请地址:https://console.cloud.tencent.com/cam/capi
点击新建密钥后,会出现如下提示
dnspod.env中的secretId填写提示的SecretId
SecretKey填写SecretKey
例如
- 编辑replace_certs_and_reload_service.sh脚本
将rsync -avPL /etc/letsencrypt/live/ /opt/ssl/certs/
中的改为/opt/ssl/certs/
你想要存放证书的地址,自动续期完成后,将证书拷贝到/opt/ssl/certs/目录
将cd /opt/nginx/ && docker compose stop && docker compose start
命令替换为你想要重启的服务的命令,我这里是用的nginx,目录在/opt/nginx/,切换过去执行了docker compose stop && docker compose start命令去重启它 - chmod +x *.sh, ./force_renew.sh example.com是强制续期命令, ./renew.sh 是自动续期命令,快到期一个月前自动续期否则不会续期
- 设置定时任务
apt install cron
安装crontab
systemctl status cron
查看服务是否在运行
crontab -e
编辑crontab添加如下命令
每周五晚上九点定时执行
评论区