随着HTTPS的覆盖率越来越广,SSL证书的需求量也在上升。为了更加完善HTTPS加密协议的使用,2017年3月CA | B论坛发起了一项关于对域名强制检查CAA的一项提案的投票,获得187票支持,投票有效,提议通过。
提议通过后,将于2017年9月8日根据Mozilla的Gervase Markham提出的检查CAA记录作为基准要求来实施。
什么是DNS CAA?
证书颁发机构授权(全称Certificate Authority Authorization,简称CAA)为改善PKI(Public Key Infrastructure:公钥基础设施)生态系统强度,减少证书意外错误发布的风险,通过DNS机制创建CAA资源记录,从而限定了特定域名颁发的证书和CA(证书颁发机构)之间的联系。
CAA是保护域名免受钓鱼的安全措施,网站运营商可以通过该措施来保护域名免于错误发布。在2013年由RFC 6844进行了标准化,允许CA“降低意外证书错误的风险”。默认情况下,每个公共CA都可以为公共DNS中的任何域名颁发证书,只要它们验证对该证书的控制域名。这意味着,如果在许多公共CA的验证过程中有任何一个错误,每个域名都可能受到影响。CAA为域名持有者提供了降低风险的途径。
而DNS Certification Authority Authorization(DNS证书颁发机构授权)是一项借助互联网的域名系统(DNS),使域持有人可以指定允许为其域签发证书的数字证书认证机构(CA)的技术。它会在 DNS 下发 IP 的同时,同时下发一条资源记录,标记该域名下使用的证书必须由某证书颁发机构颁发。ssl证书申请
CAA记录格式
根据规范(RFC 6844),CAA记录格式由以下元素组成:
CAA <flags> <tag> <value>
名词解释:
CAA:DNS资源记录类型
<flags>:认证机构限制标志
<tag>:证书属性标签
<value>:证书颁发机构、策略违规报告邮件地址等
<flags>定义为0~255无符号整型,取值:
Issuer Critical Flag:0
1~7为保留标记
<tag>定义为US-ASCII和0~9,取值:
CA授权任何类型的域名证书(Authorization Entry by Domain) : issue
CA授权通配符域名证书(Authorization Entry by Wildcard Domain) : issuewild
指定CA可报告策略违规(Report incident by IODEF report) : iodef
auth、path和policy为保留标签
<value>定义为八位字节序列的二进制编码字符串,一般填写格式为:
[domain] [“;” * 参数]
CAA记录查询
CAA记录是一个相对较新的资源记录,目前很多工具并不支持。以dig为例,不能适用其标准语法。若需要查询CAA记录,dig时需要直接指定RR类型(type257)。