Ich habe drei Zertifikate in einer Kette:
- root.pem
- intermediär.pem
- john.pem
Wenn ich sie mit untersuche, sehen openssl x509 -in [filename] -text -noout
sie gut aus. Root.pem scheint selbstsigniert zu sein (Aussteller == Betreff), und der Betreff jedes Zertifikats ist erwartungsgemäß der Aussteller des nächsten Zertifikats.
Und tatsächlich kann ich die Kette bis zum Zwischenzertifikat überprüfen:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
John.pem schlägt jedoch fehl:
$ 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
Nach meinem besten Wissen bedeutet dies, dass openssl den Aussteller für intermediär.pem nicht finden kann. Was keinen Sinn macht, da root.pem tatsächlich der Aussteller für intermediäre.pem ist.
Was vermisse ich?
Bearbeiten: Ich hatte ursprünglich eine Antwort gepostet, die besagt, dass root.pem und intermediäre.pem in einer Datei verkettet werden sollten, und dann sollte man diese Datei als Parameter für verwenden -CAfile
. Dies ist FALSCH, weil dies implizit Intermediate.pem vertraut, wie Johannes Pille betont . Lesen Sie den Link, den er in meiner gelöschten Antwort gepostet hat: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html