# API Hook<no value>

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 等）实现。

2. 应用场景

- 通配符证书（*.example.com）

 HTTP-01 无法申请通配符证书，必须用 DNS-01，因此 API 自动化非常关键。

- 大规模多域名证书管理

如果有几十上百个域名，手动加 TXT 记录几乎不可能，API 自动化可以定时批量更新。

- 无 Web 服务器环境

比如仅有邮件服务器、VPN、IoT 设备，只能用 DNS 验证，这时 API 最方便。

- 自动续签

Certbot 默认证书 90 天过期，结合 API 可以做到全自动续签，避免人工干预。

3. 使用步骤（简化）

    1. 在 DNS 服务商（如 Cloudflare、AWS Route53、阿里云DNS）生成 API Token/Key。

    2. 安装对应的 Certbot DNS 插件：
    ```terminal
    apt install python3-certbot-dns-cloudflare
    ```

    3. 配置 API 凭证文件，例如 `/etc/letsencrypt/cloudflare.ini`：
    ```terminal
    vi /etc/letsencrypt/cloudflare.ini
    ```
    编辑文件内容:
    请将下面 `your-token` 替换成你的API
    ```ini
    dns_cloudflare_api_token = your-token
    ```

    4. 授予权限:
    ```Terminal
    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
```Terminal
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" \
     -H "Authorization: Bearer your-token"
```



