这与另一个问题有关,如何使用 OpenSSL CLI 验证一个实体的签名?
我曾经openssl s_client -showcerts -connect www.google.com:443
从谷歌收集三个证书。称他们为g0
, g1
, g2
, 其中:
g0
是由 Google 的中间 CA 签署的叶子证书g1
持有中间 CA 公钥并由 GeoTrust CA 签名g2
持有 GeoTrust 公钥并由 EquiFax CA 签名
我的目标是使用 OpenSSL CLI 逐步证明这是一个有效的签名链。直观的尝试是这样的:
$ openssl verify -CAfile g1 g0
但事实证明,OpenSSL 正在使用来自其受信任存储的证书(请参阅如何使用 OpenSSL CLI 验证另一个实体的签名?)。因此,我杀死了受信任的商店,正如@dave_thompson_085 在对上述问题的评论中所建议的那样。但这似乎不起作用:
$ openssl verify -CApath /dev/null -CAfile g1 g0
g1.crt: C = US, O = Google Inc, CN = Google Internet Authority G2
error 2 at 1 depth lookup:unable to get issuer certificate
那么我如何正确地发出这个verify
命令,以便我可以专门检查是否g1
已签名g0
?
$ openssl version
OpenSSL 1.0.1f 6 Jan 2014