在您自己的CAA记录中设置值时,您应该如何找出CA的确切值?在letsencrypt的情况下,他们提供了一个文档here,提到他们的问题标识符是letsencrypt.org,并且它也在Certification Practice Statement第4.2.1节中记录.如果我检查证书,我可以在其中看到各种字段,但是,没有完全匹配此字符串,尽管有一些包含它.这似乎不是一种严格或可靠的方法来确保CA与CAA记录中的内容相匹配 – 例如,什么阻止它与letsencrypt.org.evilcorp.com相匹配?
从人的角度来看,这一切都是可行的,但不是机器可读的,并且对于这个CA来说是独一无二的.
我也有来自Comodo的证书,我发现各种非权威的消息来源说他们的CAA问题ID是comodoca.com(和其他人说它是comodo.com),但我没有找到像letsencrypt这样的官方文档.那. comodoca.com字符串确实出现在我的证书的某些字段中,但不会出现在我希望可靠地找到它的上下文中 – 例如发行者名称是COMODO ECC域验证安全服务器CA(来自GB的COMODO CA Limited),CRL是http://crl.comodoca.com/COMODOECCDomainValidationSecureServerCA.crl,OCSP URI是http://ocsp.comodoca.com.
SSLMate有一个CAA record generator,它包含一个CA列表和它们的发行者ID – 但是从哪里获得的信息?
现在考虑验证案例 – 给定一个证书和一个或多个CAA颁发者ID,我们期望证书中的哪些元素与CAA颁发者完全匹配?或者是从CT日志等其他服务获得的信息?
那么,简而言之,应该从哪里获得CAA发行人ID以及如何可靠地验证它们?
解决方法
RFC 6844
没有强制要求发行人的任何标准,实际上相反,它授予几乎完全的自由:
The semantics of issuer-parameters are determined by the issuer
alone.
但是要退后一步:据我所知,CAA记录并非旨在被最终用户用来验证他们获得的TLS证书是否由正确的证书颁发者颁发.
它仅供(信誉良好的)证书颁发者使用,以验证是否允许他们为该主机/域颁发(新)证书.
如果存在CAA记录,则只有证书颁发者需要检查CAA记录中是否存在他们期望/要求的内容.
您的证书颁发者(即您的CA)需要在CAA问题记录中传达他们识别的域.以及它们需要的其他参数(如果有的话).
例如:Comodo使用comodo.com作为其在线品牌,可以完全免费识别CAA记录中完全不同的comodoca.com域名.实际上,CA也不仅限于识别单个域 – 例如,Comodo认可four different ones:comodo.com,comodoca.com,usertrust.com和trust-provider.com
注意:CAA记录仅在颁发证书时使用.从已经发布的有效证书中反转工程CAA记录应该没有直接目的.
Where should CAA issuer IDs be obtained from?
据我所知,没有什么可以轻松实现自动化,但对于手动方法:
CA /浏览器论坛requires要发布该信息的统一位置:
“自2017年9月8日起生效,CA证书政策和/或认证实践的第4.2节声明应说明CA的政策或惯例处理完全合格域名的CAA记录;该政策应与这些政策保持一致要求.它应明确指定CA在CAA“问题”中承认的颁发者域名集合“issuewild”记录允许它发行.“