# CAA 记录生成器：BIND、Cloudflare、阿里云、DNSPod

> 生成 CAA 解析记录：选择允许签发的 CA、通配符规则、iodef 和 accounturi，复制 BIND、Cloudflare、阿里云解析或 DNSPod 的填写内容。

Source: https://ssl.sh/zh/tools/caa-generator/
Last updated: 2026-11-10

选好允许为你的域名签发证书的 CA，生成可以直接填进 DNS 控制台的 CAA 记录。

CAA 记录生成器用来生成告诉证书颁发机构“谁可以给我的域名签证书”的 DNS 记录。勾选你使用的 CA，决定通配符证书怎么处理，再按你的 DNS 服务商格式复制结果。工具在浏览器里运行。

## 怎么用

1. 填域名和主机记录（`@` 表示域名本身，也可以填子域名前缀）。
2. 勾选允许签发的 CA，其他 CA 的标识可以写在下面的文本框里。
3. 选择通配符策略：与上面相同、禁止通配符、或只允许指定的 CA。
4. 可选：填 `iodef` 报告地址（`mailto:` 或 `https:`）和 Let's Encrypt 的 `accounturi`。
5. 把 BIND 记录，或 Cloudflare、阿里云、DNSPod 的填写内容复制到 DNS 控制台。

生成结果示例：

```text
example.com.	3600	IN	CAA	0 issue "letsencrypt.org"
example.com.	3600	IN	CAA	0 issuewild ";"
example.com.	3600	IN	CAA	0 iodef "mailto:security@example.com"
```

## 在国内 DNS 控制台怎么填

- **阿里云云解析**：添加记录，记录类型选 CAA，主机记录填 `@`，记录值填 `0 issue "letsencrypt.org"` 这样的完整内容，每条一行记录。
- **DNSPod（腾讯云）**：同样选 CAA 类型，主机记录 `@`，记录值填完整的 `0 issue "letsencrypt.org"`。
- 每个允许的 CA 各加一条 `issue` 记录。

## 规则怎么组合

- `issue` 列出可以签发所有证书的 CA，多条 `issue` 表示其中任何一家都可以。
- 有 `issuewild` 时，通配符证书改为按 `issuewild` 判断；`issuewild ";"` 表示完全禁止通配符证书。
- 一条 CAA 记录都没有时，任何 CA 都可以签。主域名上的记录也管住没有自己记录的子域名。

## 发布之前

1. 用 [CT 日志查询](https://ssl.sh/zh/tools/ct-search/)找出这个域名的所有证书，记下每一家签发 CA，别漏了 CDN 和云厂商托管的证书。
2. 发布记录，等过了 TTL，再用 [CAA 记录查询](https://ssl.sh/zh/tools/caa-checker/)确认。
3. 续期报 CAA 错误时，参考 [CAA 记录导致无法签发](https://ssl.sh/zh/errors/caa-record-prevents-issuance/)。


## FAQ

**CA 标识该填什么？**

以 CA 官方文档为准。很多证书品牌的实际签发方是另一家 CA，比如 PositiveSSL 由 Sectigo 签发（sectigo.com），RapidSSL、GeoTrust 由 DigiCert 签发（digicert.com）。不确定的话，用证书解析工具看现有证书的签发者。

**用了 Cloudflare，要加 Cloudflare 用的 CA 吗？**

Cloudflare 文档说明，添加 CAA 记录后，它会自动为 Universal SSL 使用的 CA 补充记录，保证边缘证书正常续期。你自己申请的证书用到的 CA 需要自己加。

**accounturi 有什么用？**

把签发限制在 CA 的某一个 ACME 账户上（RFC 8657）。即使别人通过了域名验证，也没法用其他账户拿到证书。Let's Encrypt 的账户地址可以在 ACME 客户端的账户文件里找到。

**CAA 会导致续期失败吗？**

会，如果漏掉了正在用的 CA。发布前把这个域名下所有证书（包括 CDN、云 WAF、云厂商托管的证书）都列出来，把它们的 CA 都加上。
