我有一连串的三个证书:
- root.pem
- 中间件
- 约翰·佩姆
当我使用openssl x509 -in [filename] -text -noout
它们进行检查时,它们看起来不错,root.pem看起来就像是自签名的(Issuer == Subject),并且每张证书的Subject都是下一个证书的Issuer。
实际上,我可以验证到中间证书的链:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
但是,john.pem失败:
$ openssl verify -CAfile root.pem -CAfile intermediate.pem john.pem
john.pem: C = CL, [...redacted data...]
error 2 at 1 depth lookup:unable to get issuer certificate
据我所知,这意味着openssl无法找到middle.pem的发行者。这没有任何意义,因为root.pem实际上是middle.pem的颁发者。
我想念什么?
编辑:我最初发布了一个答案,说root.pem和intermediate.pem应该连接在一个文件中,然后应该使用该文件作为参数-CAfile
。正如约翰内斯·皮耶(Johannes Pille)指出的那样,这是错误的,因为它隐式地信任middle.pem。阅读他在我已删除的答案中发布的链接:https : //mail.python.org/pipermail/cryptography-dev/2016-August/000676.html