API Hook
- 原理
Certbot 默认使用 HTTP-01 或 DNS-01 验证来证明你对域名的控制权。
HTTP-01:在服务器上放置一个临时文件,让 Let’s Encrypt 访问验证。
DNS-01:在域名 DNS 上添加 TXT 记录来验证。
当你使用 DNS-01 + API 模式时,Certbot 不需要你手动去 DNS 管理后台添加 TXT 记录,而是直接调用 DNS 服务商的 API 自动完成验证。这通常通过 Certbot 的 DNS 插件(如 certbot-dns-cloudflare、certbot-dns-route53 等)实现。
- 应用场景
- 通配符证书(*.example.com)
HTTP-01 无法申请通配符证书,必须用 DNS-01,因此 API 自动化非常关键。
- 大规模多域名证书管理
如果有几十上百个域名,手动加 TXT 记录几乎不可能,API 自动化可以定时批量更新。
- 无 Web 服务器环境
比如仅有邮件服务器、VPN、IoT 设备,只能用 DNS 验证,这时 API 最方便。
- 自动续签
Certbot 默认证书 90 天过期,结合 API 可以做到全自动续签,避免人工干预。
-
使用步骤(简化)
-
在 DNS 服务商(如 Cloudflare、AWS Route53、阿里云DNS)生成 API Token/Key。
-
安装对应的 Certbot DNS 插件:
apt install python3-certbot-dns-cloudflare- 配置 API 凭证文件,例如
/etc/letsencrypt/cloudflare.ini:
vi /etc/letsencrypt/cloudflare.ini编辑文件内容: 请将下面
your-token替换成你的APIdns_cloudflare_api_token = your-token- 授予权限:
chmod 600 /root/.cloudflare-api.ini使用 Certbot 申请证书: 请将
example.com替换成你的域名certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials /root/.cloudflare-api.ini \ --dns-cloudflare-propagation-seconds 60 \ -d example.com \ -d www.example.com -
(可选)验证API是否可用:
请将下面 your-token 替换成你的API
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" \
-H "Authorization: Bearer your-token"