使用 openssl 验证信任链的问题

Issues verifying trust chain with openssl

我阅读了有关此主题的其他问题,但它们对我没有帮助。

我有一个 root CA 自签名。

[ubuntu@user]$ openssl x509 -in rootca.cer -noout -subject
subject= /O=org/CN=ROOT CA

[ubuntu@user]$ openssl x509 -in rootca.cer -noout -issuer
issuer= /O=org/CN=ROOT CA

我有一个由根 CA 签名的中间 CA

[ubuntu@user]$ openssl x509 -in intermediateca.cer -noout -subject
subject= /O=org/CN=INTERMEDIATE CA

[ubuntu@user]$ openssl x509 -in intermediateca.cer -noout -noout -issuer
issuer= /O=org/CN=ROOT CA

我还有中间 CA 签署的最终证书

[ubuntu@user]$ openssl x509 -in finalcert -noout -subject
subject= blabla

[ubuntu@user]$ openssl x509 -in finalcert -noout -noout -issuer
issuer= /O=org/CN=INTERMEDIATE CA

这是我遵循的验证过程

[ubuntu@user]$ openssl verify -verbose -CAfile rootca.cer  intermediateca.cer
intermediateca.cer: OK

[ubuntu@user]$ openssl verify -verbose -CAfile rootca.cer  -untrusted intermediateca.cer  finalcert.cer
finalcert.cer: blabla
error 20 at 0 depth lookup: unable to get local issuer certificate

为什么我无法正确验证最终证书?

谢谢。

我刚刚注意到 intermediateca.cer 的 public 密钥在签署最终证书后已更改。这就是为什么验证returns出错。

这可以通过中间和最终证书中 public 密钥的散列值来检查。哈希存储在主题密钥标识符和权限密钥标识符密钥中。