这与另一个问题有关,如何使用 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