API Hook

  1. 原理

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 等)实现。

  1. 应用场景
  • 通配符证书(*.example.com)

HTTP-01 无法申请通配符证书,必须用 DNS-01,因此 API 自动化非常关键。

  • 大规模多域名证书管理

如果有几十上百个域名,手动加 TXT 记录几乎不可能,API 自动化可以定时批量更新。

  • 无 Web 服务器环境

比如仅有邮件服务器、VPN、IoT 设备,只能用 DNS 验证,这时 API 最方便。

  • 自动续签

Certbot 默认证书 90 天过期,结合 API 可以做到全自动续签,避免人工干预。

  1. 使用步骤(简化)

    1. 在 DNS 服务商(如 Cloudflare、AWS Route53、阿里云DNS)生成 API Token/Key。

    2. 安装对应的 Certbot DNS 插件:

    apt install python3-certbot-dns-cloudflare
    1. 配置 API 凭证文件,例如 /etc/letsencrypt/cloudflare.ini
    vi /etc/letsencrypt/cloudflare.ini

    编辑文件内容: 请将下面 your-token 替换成你的API

    dns_cloudflare_api_token = your-token
    1. 授予权限:
    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"