最为知名的免费 SSL 证书颁发机构 — Let’s Encrypt 日前宣布在生产环境中启用 ACME CAA 绑定大幅度提升域名签发 SSL 证书的安全性。
CAA 证书颁发机构授权是由 RFC 8659 指定的一项功能,用 ACME-CAA 规范编写者 Hugo Landau 的话说,这就是给 CA 基础设施 提供了一个小而重要的增强,因为这可以关闭域名验证漏洞。
CAA 规范的功能:
当我们为域名启用 HTTPS 加密时,可以在 DNS 里添加 CAA 指向 letsencrypt.org,这代表仅允许 Let’s Encrypt 为我们的域名签发证书,其他 CA 机构不允许为该域名签发证书。
为什么要创建这个规范?
因为普通 DV 证书可以通过 DNS 域名进行验证,如果攻击者劫持这个域名在特定范围内的访问,那就可以为该域名创建合法的 SSL 证书,这个证书则可以用来发起 MITM 中间人劫持。用户通过浏览器访问该域名时,由于获取的是合法证书,因此浏览器不会报错,而数据则可能会被中间人获取。
作为一项重要的安全更新,Let’s Encrypt 早已支持 CAA 记录,只不过这个一直是可选的,而 ACME 之前还没有支持这个功能。
现在 Let’s Encrypt 在生产环境中启用 ACME CAA 绑定,允许 ACME 客户端使用特定的 DNS 记录限制仅允许哪些证书颁发机构为该域名颁发证书。
说起这个我们倒是想起了最近巴拿马 CA 机构 TrustCor 的故事,这个 CA 机构注册地位于巴拿马,实际办公地点未知,其网站所说的加拿大办公地址是个邮局也就是非真实办公地。
这个 CA 机构被发现与美国国防部承包商有关联,因此被认为是美国国防部的马甲,可能会被用来签发虚假证书发起劫持 — 因为至少在此前 TrustCor 被所有浏览器和操作系统信任。
当我们为域名指定 CAA 后 TrustCor 这样的马甲 CA 也无计可施,因为如果他们违反 CAA 签发证书,那必定会在 CT 透明度日志中被发现以及审计方面出现问题。
相反如果不启用 CAA 他们仍然可以为特定域名签发证书但只能在 CT 透明度日志中被发现,如果域名所有者没有订阅 CT 透明度日志则难以发现问题。
在这里也推荐大家将自己的域名指定特定的 CAA,目前所有 CA 机构都已经支持 CAA,不过都是可选的。
评论 (0)