怎样使用Certbot签发和续期证书-DNSpot API

2020年7月21日 | 分类: 【技术】

【准备】

获得DNSPod API密钥:

网址:https://console.dnspod.cn/account/token/apikey

复制 SecretId / SecretKey 备用。

【部署】

参考:https://github.com/penlinux/certbot-dns-dnspod

安装 Certbot:

Ubuntu 系统:

apt install certbot

CentOS 系统:

yum install certbot

安装TCCLI:

pip install tccli

配置 TCCLI:

tccli configure --profile certbot
# 填写云 API 密钥 SecretId
# 填写云 API 密钥 SecretKey
# 无需更改云产品地域,默认 ap-guangzhou
# 无需更改输出格式,默认 json

安装 certbot-dns-dnspod 插件:

curl -L https://cdn.jsdelivr.net/gh/openbunny/certbot-dns-dnspod/dnspod.sh -o /usr/local/bin/dnspod
chmod +x /usr/local/bin/dnspod
# 如果你的命令行里还找不到这个脚本,可以创建一个符号链接
ln -s /usr/local/bin/dnspod /usr/bin/dnspod

签发证书:

certbot certonly --manual --preferred-challenges=dns --manual-auth-hook "dnspod" --manual-cleanup-hook "dnspod clean" -d *.domain.name -d domain.name

手动续签:

certbot renew --manual --preferred-challenges=dns --manual-auth-hook "dnspod" --manual-cleanup-hook "dnspod clean"

使用定时任务 crontab 定时续签:

sudo crontab -e
30 0 * * * root certbot renew --manual --preferred-challenges=dns --manual-auth-hook "dnspod" --manual-cleanup-hook "dnspod clean" --deploy-hook "nginx -t && systemctl restart nginx"

【排错】

报错:子域名负载均衡数量超出限制

因为 _acme-challenge 记录太多,需要进入 DNSPod 后台删除已废弃的记录。