更新时间:2023-08-10 GMT+08:00

什么是CAA?

CAA(Certification Authority Authorization,证书颁发机构授权)是一项防止HTTPS证书错误颁发的安全措施,遵从IETF RFC6844。从2017年9月8日起,要求CA(Certification Authority,证书颁发)机构执行CAA强制性检查。

CAA标准

CAA标准是指域名所有者在其域名DNS记录的CAA字段中,授权指定的CA机构为其域名颁发证书。

全球约有上百个CA机构有权发放HTTPS证书,证明您网站的身份。CAA标准可以使网站将指定CA机构列入白名单,仅授权指定CA机构为网站的域名颁发证书,防止HTTPS证书错误颁发。设置CAA记录是提高网站安全性的方法之一。

CA机构在为域名签发证书时执行CAA强制性检查:

  • 如果检查域名的DNS记录,发现未设置CAA字段,则为域名颁发证书。

    这种情况下,任何CA机构均可为域名签发证书,存在HTTPS证书错误颁发的风险。

  • 如果检查域名的DNS记录,在CAA字段发现获得授权,则为域名颁发证书。
  • 如果检查域名的DNS记录,在CAA字段发现未获得授权,则拒绝为域名颁发证书,防止未授权HTTPS证书错误颁发。

CAA记录

CAA记录由一个[flag]标志字节和一个被称为属性的[tag]-[value]标(标签-值)对组成,可以将多个CAA字段添加到域名的DNS记录中。

表1 CAA记录配置规则

目的

样例

描述

设置单域名CAA记录

0 issue "ca.example.com"

该字段表示只有ca.example.com可以为域名domain.com颁发证书,未经授权的第三方CA机构申请域名domain.com的HTTP证书将被拒绝。

0 issue ";"

该字段表示拒绝任何CA机构为域名domain.com颁发证书。

设置发送警报通知

0 iodef "mailto:admin@domain.com"

该字段用于当第三方尝试为一个未获得授权的域名申请证书时,通知CA机构向网站所有者发送警报邮件。

0 iodef "http:// domain.com/log/"

0 iodef "https:// domain.com/log/"

该字段用于记录尝试在其他CA申请HTTPS证书的行为。

设置颁发通配符域名证书

0 issuewild "ca.example.com"

该字段用于将通配符证书的颁发权限指定CA机构ca.example.com。

综合配置样例

0 issue "ca.abc.com"

0 issuewild "ca.def.com"

0 iodef "mailto:admin@domain.com"

该字段表示域名domain.com:

  • 授权CA机构ca.abc.com颁发不限类型的证书。
  • 授权CA机构ca.def.com颁发通配符证书。
  • 禁止其他CA机构颁发证书。
  • 当有违反设置规则的情况发生,CA机构发送通知邮件到admin@domain.com。

验证CAA解析记录是否生效?

CAA解析记录可以通过dig+trace命令查看域名是否生效以及具体的解析过程。如果操作系统没有自带dig命令,需要手动安装后才能使用。

命令格式为:dig [类型] [域名] +trace。

示例如下:

dig caa www.example.com +trace