证书颁发机构授权 (CAA) DNS 记录类型包括一个issue
参数 (also issuewild
),该参数指定允许为您的域颁发证书的证书颁发机构的标识符。没关系,但有点模糊。
在您自己的 CAA 记录中设置值时,您应该如何找出您的 CA 的确切值应该是什么?对于letsencrypt,他们在此处提供了一个文档,其中提到他们的问题标识符是letsencrypt.org
,并且它也记录在他们的认证实践声明第4.2.1节中。如果我检查证书,我可以看到其中的各个字段,但是,没有一个与此字符串完全匹配,尽管有些字段包含它。这似乎不是确保 CA 与 CAA 记录中的内容相匹配的严格或可靠的方法——例如,是什么阻止了它被匹配letsencrypt.org.evilcorp.com
?
从人类的角度来看,这一切都是可行的,但不是很机器可读,并且是这个 CA 独有的。
我也有来自 Comodo 的证书,并且我发现各种非权威来源说他们的 CAA 问题 id 是comodoca.com
(而其他人说它是comodo.com
),但我还没有找到像 letencrypt 这样的官方文档。该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,以及如何可靠地验证它们?
相关
RFC 6844
没有为发行人规定任何标准,实际上相反,它授予几乎完全的自由:但退一步说:据我所知,CAA 记录并不打算供最终用户用来验证他们获得的 TLS 证书是否由正确的证书颁发者颁发。
它旨在仅由(信誉良好的)证书颁发者使用,以验证他们是否被允许为该主机/域颁发(新)证书。
如果 CAA 记录存在,则只有证书颁发者需要检查 CAA 记录中是否存在他们期望/要求的任何内容。
您的证书颁发者,即您的 CA,将需要传达他们在 CAA 颁发记录中识别的域。以及他们需要的其他参数(如果有的话)。
例如:Comodo,它
comodo.com
用于其在线品牌,可以完全自由地识别comodoca.com
CAA 记录中完全不同的域。实际上,CA 也不仅限于识别单个域 - 例如 Comodo 识别四个不同的域 :comodo.com
、、comodoca.com
和usertrust.com
trust-provider.com
注意: CAA 记录仅在颁发证书时使用。从已经颁发的有效证书中对 CAA 记录的内容进行逆向工程没有直接的目的。
据我所知,没有什么可以轻松实现自动化,但对于手动方法:CA/Browser 论坛需要一个统一的位置来发布该信息:
“自 2017 年 9 月 8 日起生效, CA 证书政策和/或认证实践声明的第 4.2 节应说明 CA 处理完全合格域名的 CAA 记录的政策或实践;该政策应与这些要求一致。它应明确指定
issue
CA 在 CAA“ ”或“ ”记录中识别的一组颁发者域名,issuewild
以允许其颁发。