一个证书链如何被两个不同的CA证书验证?

问题描述 投票:0回答:1

我导出了 google.com 提供的证书,其链接为“GTS Root R1”->“GTS CA 1C3”->“*.google.com”。我将“GTS CA 1C3 + *.google.com”放入 inter.cer 文件中。然后从 chrome 管理证书中我找到“GTS Root R1”并将其导出到 root_ca.cer。用 root_ca.cer 验证了 inter.cer,没问题:-

% openssl verify -CAfile root_ca.cer inter.cer
inter.cer: OK

此外,我还有另一个来自 QuoVadis 的 root ca,名为 quovadis.cer (发行者:C=BM、O=QuoVadis Limited、CN=QuoVadis Root CA 2),当我验证 inter.crt 时,它也成功了:-

% openssl verify -CAfile quovadis.cer inter.cer
inter.cer: OK

现在我的问题是,证书链(这里是 inter.cer )如何能够由两个不同的根 CA 进行验证。针对“GTS Root R1”( root_ca.cer )的验证我可以理解,但是 quovadis.cer 也可以验证 inter.cer。两个根 CA 都有不同的公钥、密钥标识符等。

我浏览了不同的文章,但没有得到任何满意的答案。

ssl openssl ssl-certificate x509certificate client-certificates
1个回答
0
投票

虽然

-CAfile
adds 根 CA 进行验证,但它不会删除现有受信任 CA 的使用。这意味着如果相关 CA 位于默认 CA 存储中,则您在
-CAfile
中给出的内容并不重要,即,它与您省略此选项的效果相同。

要从验证过程中删除默认 CA,您还需要添加

-no-CAfile
-no-CApath
-no-CAstore
。请参阅 openssl-verification-options

© www.soinside.com 2019 - 2024. All rights reserved.