Let’s Encrypt在ACME-CAA支持账户绑定和验证方法绑定

Let’s Encrypt宣布在产品环境激活ACME-CAA(Certification Authority Authorization)账户绑定和验证方法绑定,这是由IETF RFC 8657标准规范的功能,该规范在2019年发布,Let’s Encrypt现在正式于产品环境支持。

CAA功能允许ACME客户端使用指定的DNS记录,以限制域名能够接受的凭证颁发机构,而新加入的账户绑定和验证方法绑定,则是对CAA的扩展。账户绑定使Let’s Encrypt用户能够限制颁发凭证所使用的ACME账户,而验证方法绑定则是让用户能够限制域名控制验证方法集。

RFC 8657规范作者Hugo Landau,在博客讲解了Let’s Encrypt ACME-CAA的细节以及重要性,还有账户绑定和验证方法绑定的使用。

SSL凭证当初的设计,就是为了消除浏览器和网站之间的中间人攻击,所以凭证颁发机构在请求网站的SSL凭证时,凭证颁发机构就必须进一步采取措施,来验证网站是该域名的合法拥有者。凭证颁发机构基本上采取根据验证的等级收费的模型,而最便宜的便是域名验证(Domain Validation,DV)凭证,该服务在Let’s Encrypt则是免费提供。

而域名验证的运行方式,会由凭证颁发机构要求用户在其域名中,托管随机盘问(Challenge)字符串,当域名能够成功托管该盘问字符串,则代表用户已经控制该域名,将被视为该域名的合法运营者。不过,因为用户是为了要拿到凭证才进行域名验证,因此在进行域名验证时,尚未拿到凭证,也就是说这个过程容易遭到中间人攻击。

而凭证透明度(Certificate Transparency,CT)日志,是过去用来减轻域名验证中间人攻击的方法,CT日志是一个加密安全,可受公开审核的分类帐,凭证颁发机构所颁发的凭证都会记录在这个凭证透明度日志中,所以当凭证颁发机构错误颁发凭证,则任何人都可以看到,也使得浏览器和凭证颁发机构产业能够进一步采取防范措施,Hugo Landau表示,这种机制限制了中间人攻击的发生,实际上中间人攻击很少见,由此也证明了这种机制的效果。

但不可否认的是,凭证颁发机构的域名验证过程,仍然容易遭受中间人攻击,Hugo Landau说明,当攻击者在凭证颁发机构验证路径上,凭证颁发机构的域名验证模型就可能遭到破坏,攻击者能够简单地获得用户网站凭证,锁定高价值数据中心发动攻击。

而ACME-CAA则在这种状况下便可发挥作用,其提供凭证颁发机构重要的功能强化,填补域名验证漏洞,避免中间人攻击。CAA是一个简单的概念,其实就是域名根目录中的DNS记录,说明哪些凭证颁发机构可以为该域名颁发明证。

Hugo Landau进一步解释,大多数域名只会从一个颁发凭证机构获取凭证,但是攻击者却会去寻找全球最弱或是最容易操纵的凭证颁发机构,因此只要通过限制能够颁发凭证的颁发凭证机构,就能够消除域名验证漏洞。

Let’s Encrypt在ACME-CAA更新的两项功能,可让用户在其CAA记录accounturi参数中,指定账户唯一URL,将凭证颁发绑定至特定ACME账户,另外,用户也能够在CAA记录中,加入validationmethods参数,进而限制域名控制验证方法集。

Let’s Encrypt提到,他们已经支持CAA多年,而这也是所有的凭证颁发机构的最低要求,账户绑定和验证方法绑定则已经测试超过一年,现在正式更新到产品环境中,他们预计应该不会出现任何故障,如果用户遭遇到问题,可以先仔细检查CAA记录。