限制证书颁发机构(CA)签发SSL证书:启用DNS中的CAA记录
什么是CAA?
CAA(证书颁发机构授权)是一种DNS记录类型,用于指定哪些证书颁发机构(CA)有权为特定域名签发证书。该记录通过公开可查的DNS记录声明,CA在颁发证书前必须进行验证。
背景知识
虽然CAA的首个草案由Phillip Hallem-Baker和Rob Stradling在2010年提出,但过去5年由于CA相关问题和黑客攻击频发而加速发展。历史上首次CA违规事件发生在2001年,VeriSign向冒充微软代表的个人颁发了名为"Microsoft Corporation"的证书。2011年,Comodo和DigiNotar在被伊朗黑客攻击后签发欺诈证书。2012年Trustwave签发用于SSL流量嗅探的子根证书。
未配置CAA记录的风险
若未配置CAA记录,任何CA都可为您的域名签发证书。CAA记录相当于在域名级别对CA进行白名单限制。根据现行规范,CA必须查询域名的CAA记录,仅当无记录或CA在白名单中时才能签发证书。
CAA记录语法格式
CAA记录格式为:<flag> <tag> <value>
-
flag:整数标志(1-255),目前用于关键标志
-
value:标签定义的属性值
主要标签说明:
iodef
:指定违规报告方式(mailto/http/https)
DNS软件支持情况
支持CAA记录的DNS软件包括:
- BIND(9.10.1B及以上)
- Knot DNS(2.2.0及以上)
- PowerDNS(4.0.0及以上)
- Windows Server 2016等
主流DNS服务商如Amazon Route 53、Cloudflare、Google Cloud DNS也提供支持。
实际配置示例
作者网站配置示例:
|
|
互联网现状
审计发现Alexa Top 10,000网站中仅4%配置了CAA记录,网络安全措施仍有很大提升空间。
参考资料:
- Comodo CA攻击事件
- DigiNotar攻击事件
- Trustwave子根证书事件
- CAA强制检查规范(Ballot 187)
- IETF RFC 6844标准