CAA记录是DNS中用于授权指定公共CA为域名签发SSL/TLS证书的安全策略,自2017年9月起为强制检查项,格式为“flag tag value”,支持issue、issuewild、iodef等标签,未配置则默认允许任何CA签发。

CAA(Certification Authority Authorization)记录是一种DNS资源记录,用于明确指定哪些证书颁发机构(CA)被授权为某个域名签发公开信任的SSL/TLS证书。它不是用来控制私有CA或自建CA的行为,而是面向公共CA(如Let’s Encrypt、DigiCert、Sectigo等)的强制性策略机制——自2017年9月起,所有符合CA/Browser Forum基线要求的公共CA在签发证书前,必须检查并遵守域名的CAA记录。
CAA记录的基本语法与字段含义
CAA记录由三部分组成:flag、tag 和 value,格式为:
example.com. IN CAA 0 issue "letsencrypt.org"
- flag:目前仅支持0(非关键)和128(关键)。设为128时,不理解该tag的CA必须拒绝签发;生产环境一般用0。
-
tag:定义策略类型,常用值有:
• issue:授权某CA为该域名(含子域)签发任意类型证书;
• issuewild:仅授权签发通配符证书(如 *.example.com);
• iodef:指定违规签发事件的报告地址(如邮件或URL)。 - value:对应tag的具体内容,如CA域名(需带引号)、邮箱(如 "mailto:security@example.com")或HTTPS端点。
常见配置示例
以下是在DNS管理后台可直接添加的典型CAA记录:
- 只允许Let’s Encrypt签发(含通配符):
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild "letsencrypt.org" - 允许多家CA(需分别添加多条记录):
example.com. IN CAA 0 issue "digicert.com"
example.com. IN CAA 0 issue "sectigo.com" - 禁止所有CA签发(即“拒绝默认”):
example.com. IN CAA 0 issue ";"(分号表示空值,代表无授权) - 同时设置违规报告地址:
example.com. IN CAA 0 iodef "mailto:caareport@example.com"
验证与注意事项
添加CAA记录后,可通过以下方式验证是否生效:
- 命令行查询:
dig CAA example.com +short或nslookup -type=CAA example.com - 在线工具:如sslmate.com/caa、DNS Checker等。
注意:
• CAA记录作用于**整个域名及其所有子域**,除非子域单独设置覆盖;
• 它对私有CA、自签名证书、内网HTTPS无约束力;
• 修改后需等待DNS TTL过期才能被CA读取,建议提前部署;
• 若未配置CAA记录,任何合规CA均可申请(即“默认开放”)。


















