应该从哪里获取 CAA 发行者 ID 以及如何验证它们?

应该从哪里获取 CAA 发行者 ID 以及如何验证它们?

证书颁发机构授权 (CAA) DNS 记录类型包括一个issue参数(也issuewild),该参数指定允许为您的域颁发证书的证书颁发机构的标识符。这没问题,但有点模糊。

在设置您自己的 CAA 记录中的值时,您应该如何找出您的 CA 的确切值?对于 letsencrypt,他们提供了一份文档这里提到他们的问题标识符是letsencrypt.org,并且也记录在他们的认证实践声明第 4.2.1 节。如果我检查证书,我可以看到其中的各种字段,但是,没有一个字段与此字符串完全匹配,尽管有一些字段包含它。这似乎不是一种确保 CA 与 CAA 记录中的内容相匹配的严格或可靠的方法 - 例如,是什么阻止了它被匹配letsencrypt.org.evilcorp.com

从人的角度来看,这一切都是可行的,但机器可读性不强,并且是该 CA 所独有的。

我也有来自 Comodo 的证书,我发现各种非权威来源都说他们的 CAA 发行 ID 是comodoca.com(其他人说是comodo.com),但我没有找到像 letsencrypt 那样的官方文档。该comodoca.com字符串确实出现在我的证书的某些字段中,但不在我期望可靠找到它的上下文中 - 例如,发行者名称是COMODO ECC Domain Validation Secure Server CA (COMODO CA Limited from GB),CRL 是http://crl.comodoca.com/COMODOECCDomainValidationSecureServerCA.crl,OCSP URI 是http://ocsp.comodoca.com

SSLMate 有一个CAA 记录生成器它包含 CA 及其发行者 ID 的列表 - 但这些信息是从哪里获得的?

现在考虑验证情况 - 给定一个证书和一个或多个 CAA 颁发者 ID,我们应该期望证书中的哪些元素与 CAA 颁发者完全匹配?或者这些信息是从 CT 日志等其他服务获得的?

那么,简而言之,应该从哪里获取 CAA 发行者 ID,以及如何可靠地验证它们?

答案1

相关RFC 6844没有为发行人强制要求任何标准,事实上恰恰相反,它赋予了几乎完全的自由:

发行者参数的语义由发行者独自决定。

但退一步来说:据我所知,CAA 记录并非旨在被最终用户用来验证他们收到的 TLS 证书是否由正确的证书颁发者颁发。

它仅供(信誉良好的)证书颁发者使用,以验证他们是否被允许为该主机/域颁发(新)证书。

只有证书颁发者才需要检查他们期望/要求的内容是否存在于 CAA 记录中(如果存在 CAA 记录)。

您的证书颁发者,即您的 CA,将需要传达他们在 CAA 颁发记录中识别哪些域。以及它们需要哪些其他参数(如果有)。

例如:Comodocomodo.com以其在线品牌使用 CAA 记录,可以完全免费识别完全不同的域名comodoca.com。实际上,CA 也不限于只识别单个域名 - 例如,Comodo 可以识别四个不同的comodo.comcomodoca.comusertrust.comtrust-provider.com

笔记:CAA 记录仅在颁发证书时使用。从已颁发的有效证书中逆向工程 CAA 记录应该是什么,没有任何直接作用。

应该从哪里获取 CAA 发行者 ID?

据我所知,没有什么可以轻易自动化解决此问题的方法,但可以采用手动方法:CA/浏览器论坛需要发布该信息的统一位置:

自 2017 年 9 月 8 日起生效,CA 证书政策第 4.2 节和/或认证实践声明说明 CA 处理完全合格域名 CAA 记录的政策或做法;该政策应与这些要求一致。应明确规定issueCA 在 CAA“ ”或“ issuewild”记录中识别并允许其颁发的颁发者域名集。

相关内容