为什么我不能验证此证书链?

钟伯

我有一连串的三个证书:

  • 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

反杜

您不必将两个证书放在一起即可对其进行验证。

如果您具有以下三个证书:

  • root.pem-存储自签名证书。
  • Intermediate.pem-存储由root.pem签名的证书
  • john.pem-存储由middle.pem签名的证书

并且您仅信任root.pem,然后可以john.pem使用以下命令进行验证

openssl verify -CAfile root.pem -untrusted intermediate.pem john.pem

如果您有许多中间体,您可以将 -untrusted intermediate2.pem -untrusted intermediate3.pem ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章