☰
Certbot + DNSPod API 自动续期:让证书永不掉线
2026/10/1 18:35:06 网站建设 项目流程

背景

用certbot --manual申请的 Let's Encrypt 证书,不会自动续期。每次快到期都要手动加 TXT 记录,90 天后就抓瞎。

改成用 DNSPod API 自动验证,一次性配置,从此不用管。

原因

certbot --manual模式,续期时需要你手工在 DNS 里加一条 TXT 记录。certbot 自己加不了。

想要自动化,必须让 certbot调 API 加记录。这就需要:

  1. 有 DNSPod 的 API 权限

  2. 装一个能调 API 的 certbot 插件

解决

1. 装插件

DNSPod 有两套 API,对应两个插件,别装错:

密钥类型该装的插件
腾讯云 API 3.0(SecretId 以AKID开头)certbot-dns-dnspod-109
DNSPod 老版 Token(纯字符)certbot-dns-dnspod
sudo pip3 install --break-system-packages certbot-dns-dnspod-109

2.申请腾讯云 API 密钥

访问https://console.cloud.tencent.com/cam/capi

推荐用子用户,只授予QcloudDNSPodFullAccess权限,别用主账号密钥。

拿到SecretId(AKID 开头)+SecretKey。

3.写凭证文件

sudo mkdir -p /root/.secrets/certbot sudo tee /root/.secrets/certbot/dnspod-109.ini > /dev/null <<'EOF' dns_dnspod_109_secret_id = YOUR_SECRET_ID dns_dnspod_109_secret_key = YOUR_SECRET_KEY EOF sudo chmod 600 /root/.secrets/certbot/dnspod-109.ini sudo chmod 700 /root/.secrets /root/.secrets/certbot

4.用新插件重新申请证书

sudo certbot certonly \ --authenticator dns-dnspod-109 \ --dns-dnspod-109-credentials /root/.secrets/certbot/dnspod-109.ini \ --cert-name YOUR_DOMAIN \ -d YOUR_DOMAIN \ --agree-tos --no-eff-email

提示Renewing an existing certificate时选2(Renew & replace)。

5.测试

sudo certbot renew --dry-run

看到这句就成功了:

Congratulations, all simulated renewals succeeded

全程没有手动加一条 TXT 记录——certbot 自动调 DNSPod API 加、验证、删除。

验证配置生效

sudo cat /etc/letsencrypt/renewal/YOUR_DOMAIN.conf | grep authenticator

从manual变成dns-dnspod-109,就对了。

三个坑

坑 1:把腾讯云 API 密钥填给老插件。老插件只认 DNSPod 传统 Token(纯字符格式),填 AKID 开头的会报401。

坑 2:DNSPod 传统 Token 写凭证文件,格式是三个字段独立成行:

dns_dnspod_api_id = 数字 dns_dnspod_api_token = 纯字符 dns_dnspod_email = 你的邮箱

不能写成token = "ID,TOKEN"这种引号+逗号的形式,会报Parsing failed。

坑 3:一定先跑--dry-run。它会真的走一遍续期流程,但不消耗 Let's Encrypt 的配额。测通再等真正的续期。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询