前言
使用acme.sh申请泛域名证书,并实现自动更新安装
本站域名托管于中国大陆的DNSPod,域名验证时通过预设的DNSPod Token
使用DNS API;大陆站和国际站的DNSPod,账号和密钥配置不通用
环境
Ubuntu 22.04.2 LTS
Tengine 2.4.1 (Nginx 1.22)
安装acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
配置DNSPod Token
去DNSPod的控制台,创建一个DNSPod Token,而不是一个腾讯云API密钥;DNSPod Token创建后只会显示一次,把它记录下来
执行以下命令,将DNSPod Token临时添加到环境变量
export DP_Id="114514"
export DP_Key="yourkeyishere1919810"
这里对应的是官方文档中的DNSPod.cn
如果是国际站的DNSPod.com,这里的写法是不同的
配置一个泛域名证书
./acme.sh --issue --dns dns_dp -d colorfulstage.cn -d '*.colorfulstage.cn'
默认使用ZeroSSH申请证书,也可以指定使用其它的机构,如Let's Encrypt等
./acme.sh --issue --dns dns_dp -d colorfulstage.cn -d '*.colorfulstage.cn' --server letsencrypt
安装证书时,必须使用acme.sh安装证书才可以自动更新,直接复制到别的目录是不能自动更新的
/root/.acme.sh/acme.sh --installcert \
-d colorfulstage.cn \
--cert-file /home/colorfulstage.cn/cert.pem \
--key-file /home/colorfulstage.cn/key.pem \
--fullchain-file /home/colorfulstage.cn/fullchain.pem \
--reloadcmd "service nginx force-reload"
关于定时任务
使用crontab -e
查看定时任务,发现acme.sh自动创建了一个定时任务用于检测全部证书的状态
直接运行这条命令的效果如下图所示
API密钥则是明文保存在/root/.acme.sh/account.conf
文件中