caa记录用于限制可为域名签发https证书的ca机构,自2017年9月起所有公共ca必须强制检查;其格式为“flag tag value”,常用tag包括issue(普通证书)、issuewild(通配符证书),value需用英文双引号包裹ca域名。

要限制哪些证书颁发机构(CA)能为你域名签发 HTTPS 证书,就得配置 DNS 的 CAA 记录。它不是可选项——自 2017 年 9 月起,所有公开 CA 都必须强制检查 CAA,没授权就直接拒发证书。
CAA 记录的基本格式
每条 CAA 记录由三部分组成:flag tag value,中间用空格分隔,全部写在一条 DNS 解析记录里:
- flag:目前只常用 0(表示非关键,CA 可忽略但通常都遵守)
-
tag:决定授权类型,最常用两个:
- issue:允许为该域名(不含子域通配符)签发普通证书
-
issuewild:允许为该域名签发通配符证书(如
*.example.com)
-
value:必须用英文双引号包裹,填被授权的 CA 域名,例如
"letsencrypt.org"或"sectigo.com"
常见配置场景与写法
在 DNS 管理后台添加记录时,主机名一般填 @(代表根域名),记录类型选 CAA,然后按需填写:
免费 DNS 与邮件安全分析(IntoDNS.ai):包括 DNSSEC、SPF、DKIM、DMARC、MTA-STS、BIMI、SMTP STARTTLS、FCrDNS、黑名单、发件人要求及报告。
- 只允许 Let’s Encrypt 为
example.com发普通证书:0 issue "letsencrypt.org" - 同时允许 Let’s Encrypt 发普通 + 通配符证书:
0 issue "letsencrypt.org"0 issuewild "letsencrypt.org" - 禁止所有 CA(慎用!会导致免费 SSL 申请失败):
0 issue ";" - 允许 Sectigo 发通配符、同时让违规行为发邮件通知你:
0 issuewild "sectigo.com"0 iodef "mailto:admin@example.com"
配置前要注意的关键点
CAA 不是“设了就完事”,实际生效受几个现实因素影响:
- 子域名默认继承根域名的 CAA 策略;但如果
blog.example.com自己设置了 CAA,则以它的为准 - 如果你的域名做了 CNAME 指向第三方(比如 CDN 或 SaaS 平台),CA 会先查目标域名的 CAA,再查你自己的——你的策略可能完全不生效
- 不同 DNS 提供商界面差异大:阿里云/腾讯云/Cloudflare 都支持 CAA,但有些小众或自建 DNS 不支持,加了也无效
- 修改后需等待 DNS 全球生效,可用
dig example.com CAA +short在多个公共 DNS(如@1.1.1.1、@8.8.8.8)上验证是否一致
为什么 SSL 申请常被 CAA 卡住?怎么快速修复?
很多用户在宝塔、ACM 或 Certbot 里申请失败,日志出现 CAA record forbids issuance 或 issue ";",大概率是注册商(如腾讯云 DNSPod)默认加了禁止记录。
- 第一步:用
dig yourdomain.com CAA +short查当前记录 - 第二步:登录 DNS 后台,删除所有 CAA 记录,或覆盖为明确授权的两条:
@ CAA 0 issue "letsencrypt.org"@ CAA 0 issuewild "letsencrypt.org" - 第三步:等 DNS 生效(通常 1–2 小时),再换用 DNS-01 验证方式重试(比 HTTP-01 更稳定,不受端口、跳转、CDN 影响)










