正确设置DNS CAA记录,提升HTTPS站点安全
随着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 的同时,同时下发一条资源记录,标记该域名下使用的证书必须由某证书颁发机构颁发。
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资源记录
需要当限制域名example.com及其子域名可由机构GlobalSign颁发不限类型的证书,同时也可由GDCA(trustauth.cn)颁发证书通配符,其他一律禁止,并且当违反配置规则时,发送通知邮件到example@example.com。
配置如下(为便于理解,二进制值值已经过转码,下同):
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issue “globalsign.com”
example.com. CAA 0 issuewild “trustauth.cn”
example.com. CAA 0 iodef “mailto:example@example.com”
子域名:如果子域名有单独列出证书颁发要求,例如:
example.com. CAA 0 issue “globalsign.com”
alpha.example.com. CAA 0 issue “trustauth.cn”
那么,因子域策略优先,所以只有GDCA为可以域名alpha.example.com颁发证书。
通配符:此外,CAA记录也可用于将通配符证书的颁发权限指定仅限一家CA。
domain.com. CAA 0 issuewild ” http://trustauth.cn”
如果不想手动设置CAA记录,也可以通过自动生成工具生成一段CAA记录,发布到DNS系统中。
CAA记录查询
CAA记录是一个相对较新的资源记录,目前很多工具并不支持。以dig为例,不能适用其标准语法。若需要查询CAA记录,dig时需要直接指定RR类型(type257)。
例如:
$ dig google.com type257
; <<>> DiG 9.8.3-P1 <<>> google.com type257
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64266
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN TYPE257
;; ANSWER SECTION:
google.com. 86399 IN TYPE257 # 19 0005697373756573796D616E7465632E636F6D
;; Query time: 51 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Dec 29 21:07:18 2016
;; MSG SIZE rcvd: 59
该查询的输出是二进制编码记录,需要转码才能知道具体CAA策略。
最后
目前,国内大多数的DNS解析商均不支持CAA记录解析。但随着HTTPS逐步取代HTTP的趋势,使用SSL证书升级HTTPS的解决方案将被大量采纳。为了避免HTTPS证书的错误签发,相信不久的将来,CAA记录解析将被兼容。同时数安时代(GDCA)作为已通过WEBTRUSR国际认证的CA机构,将会坚持不断深入研发,为各大网络商业平台提供更安全的信息安全证书,为涉足互联网的企业打造更安全的生态环境,建立更具公信力的企业网站形象。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。