通过DNS的CAA记录限制证书颁发机构签发SSL证书

本文详细介绍了CAA记录的作用及其在DNS中的配置方法,通过限制特定证书颁发机构为域名签发SSL证书来增强安全性,包括CAA记录的语法格式、DNS软件支持情况以及实际配置示例。

限制证书颁发机构(CA)签发SSL证书。在DNS中启用CAA记录

Cyber Sins and Security - Rishi Narang的博客

什么是CAA?

CAA或证书颁发机构授权是一种记录,用于标识哪些CA(证书颁发机构)被允许为相关域名颁发证书。它通过DNS记录中的CAA类型声明,公开可见,并且可以在证书颁发机构颁发证书之前进行验证。

简要背景

尽管第一份草案由Phillip Hallem-Baker和Rob Stradling在2010年记录,但由于CA的问题和黑客攻击,它在过去五年中加速了工作。第一次CA颠覆是在2001年,当时VeriSign向一个声称代表微软的个人颁发了两个名为“Microsoft Corporation”的证书。这些证书本可用于欺骗身份和提供恶意更新等。进一步在2011年,Comodo1和DigiNotar2在被伊朗黑客攻击后颁发了欺诈性证书(更多关于Comodo攻击和荷兰DigiNotar攻击的信息);这是它们在伊朗的MITM攻击中使用的证据。

进一步在2012年,Trustwave颁发了一个子根证书,用于以透明流量管理的名义嗅探SSL流量。因此,是时候在域级别限制或白名单CA了。

如果DNS中没有配置CAA记录会怎样?

简单来说,CAA记录应配置为宣布哪些CA(证书颁发机构)被允许为您的域名颁发证书。如果没有提供CAA记录,任何CA都可以为您的域名颁发证书。

CAA是一种限制您的CA存在及其为您的域名合法颁发证书的权力(们)的良好实践。这就像在您的域中白名单它们!

该过程强制证书颁发机构4(是的,现在强制!)查询DNS以获取您的CAA记录,并且只有在没有记录可用或此CA已被“白名单”时,才能为您的 hostname 颁发证书。CAA记录启用父域的规则,并且这些规则被子域继承。(除非DNS记录中另有说明)。

证书颁发机构将缺乏CAA记录解释为授权无限制颁发,而存在单个空白颁发标签则禁止所有颁发。5

CAA记录语法/格式

CAA记录具有以下格式:<flag>``<tag>``<value>,并具有以下含义:

标签名称 用途
flag 这是一个整数标志,值在1-255之间,如RFC 68446中所定义。目前用于调用关键标志。7

| value | 在<tag>中定义的属性的值。 |

RFC中定义的标签具有以下含义和对CA记录的理解:

  • iodef:如果证书被颁发或请求违反了DNS记录中定义的CAA策略,证书颁发机构将相应地报告违规行为。(选项:mailto:、http://或https://)

DNS软件支持

根据维基百科8的摘录:CAA记录受BIND(自版本9.10.1B起)、Knot DNS(自版本2.2.0起)、ldns(自版本1.6.17起)、NSD(自版本4.0.1起)、OpenDNSSEC、PowerDNS(自版本4.0.0起)、Simple DNS Plus(自版本6.0起)、tinydns和Windows Server 2016支持。

许多托管DNS提供商也支持CAA记录,包括Amazon Route 53、Cloudflare、DNS Made Easy和Google Cloud DNS。

示例:(我自己的网站DNS)

根据策略,我配置了仅“letsencrypt.org”,但由于Cloudflare Universal SSL支持,以下证书颁发机构也被配置:

此外,为违规配置了iodef:0 iodef "mailto:hello@cybersins.com"

WWW与CAA的现状如何?

在审计练习之后,我好奇地想知道前10,000个Alexa网站在CAA方面的表现如何,奇怪的是,我对结果感到惊讶:只有4%的前10K网站有CAA DNS记录。

[更新2018年2月27日]: 此饼图已更新为正确的数字。感谢Ich Bin Niche Sie识别计算错误。

现在,我们还有很长的路要走,包括新的安全标志和政策,如“CAA DNS记录”、“security.txt”文件等,我将持续覆盖这些主题,以所有可能的方式推广安全,而不干扰业务。记住始终与业务携手合作。

保持安全,并保持关注。


参考链接:

归档: « 上一篇 DevSecOps来了!不要害怕改变 下一篇 » 实施“security.txt”以倡导负责任的漏洞披露

© 2025 Cyber Sins。 向Astrid致谢支持。感谢Vimux的Mainroad基础主题和Turtle Media的徽标。用💛和Hugo制作。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计