为什么浏览器不检查 CAA 记录以帮助确保证书有效?

信息安全 公钥基础设施 证书颁发机构 dns
2021-08-12 07:01:16

如果我理解正确,证书颁发机构授权 DNS 记录用于指定允许哪些证书颁发机构为给定域颁发证书。如果该记录存​​在并且其中未列出 CA,则该 CA 必须拒绝为该域颁发证书。

但是,这似乎并不能防止 CA 中的漏洞。如果任何受信任的权威机构没有正确实施 CAA,或者如果权威机构的私钥被泄露,那么 CAA 就无济于事。

我的问题是,为什么浏览器不检查 CAA 记录?如果所提供的证书不是由记录中授权的 CA 颁发的,那么它将认为该证书无效。通过将必须信任的 CA 列表减少到仅网站所有者选择信任的 CA,这将大大提高安全性。

我了解 HPKP 也用于防止错误的证书。但是,它仅适用于 HTTP,并且需要信任为站点接收的第一个证书,或者信任第三方预加载列表。

那么这是浏览器可以实现的东西,还是我在这里遗漏了什么?

2个回答

我刚刚在RFC 6844,DNS 证书颁发机构授权 (CAA) 资源记录中找到了答案:

一组 CAA 记录仅描述为相应 DNS 域颁发证书的当前授权。由于证书的有效期通常至少为一年,因此与当前发布的 CAA 记录不一致的证书可能与颁发证书时发布的 CAA 记录一致。 依赖应用程序不得将 CAA 记录用作证书验证的一部分。[强调我的]

基本上,CAA 的目的不是描述哪些证书当前对域有效。如果在 CA 记录在案时颁发了证书,并且该记录随后被删除,则该证书应保持有效,直到其过期(或被吊销)。

通过 DNS 验证浏览器(或依赖应用程序)中的证书似乎是RFC 6698 中指定的 DANE 或基于 DNS 的命名实体身份验证的目的不幸的是,DANE 并未得到广泛实施。

不允许浏览器检查 CAA 记录,因为这会降低 Root CA 信任加强最终用户信任,从而降低 Root CA 的能力并帮助修复当前已损坏的信任系统。

真正的 SSL 安全性将允许最终用户(不是网站标头)固定他们信任的安全证书,因为他们可以从多个位置验证它,或者亲自验证它等。

即使他们能够通过 DNS 检查证书是否合法,虽然并不完美,但这仍然减少了信任根 CA 的需要,因为控制域的用户是相对于查看“最终用户”的“最终用户” (除非有任何 DNS 漏洞利用)

浏览器制造商不希望用户拥有这种权力,因为它会破坏虚假“受信任”签名者的系统(这些签名者不值得我们信任,也没有做任何事情来赢得它)。

当前的 CA 系统旨在通过其较低的证书颁发机构按需发行不良证书(由于其当前易于发行)。CAA 记录是为根证书颁发机构制作的,因此他们可以知道谁在滥用颁发,从而允许他们采取行动或允许它。

CAA 没有采取任何措施来加强在线用户的安全性。它不是“为我们”。

这就是为什么无法在浏览器扩展中获取 SSL 证书信息的原因。否则,我们可以自己实现这个系统,再也不用担心“受信任的”证书颁发机构了。