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
quelle
Antworten:
Sie müssen die beiden Zertifikate nicht zusammen katzen, um sie zu überprüfen.
Wenn Sie die folgenden drei Zertifikate haben:
Und Sie vertrauen nur root.pem, dann würden Sie
john.pem
mit dem folgenden Befehl überprüfen :Wenn Sie viele Zwischenprodukte hatten, konnten Sie einfach verketten
-untrusted intermediate2.pem -untrusted intermediate3.pem ...
quelle
openssl
hätte , würde ich diese abholen und die Zertifikate überprüfen. Gibt es einen Grund, warum dies passieren würde? Die Person, die das Benutzerzertifikat signiert hat, hat es nicht mit dem Intermediate signiert, sondern mit dem Root oder so?untrusted
Flag einmal verwenden. Die mehrfache Verwendung des nicht vertrauenswürdigen Flags funktioniert nicht.-untrusted
Optionen (in beliebiger Reihenfolge) als auch eine einzelne-untrusted
Option, die auf ein Bündel von Zwischenprodukten (in beliebiger Reihenfolge verkettet) verweist, funktionieren. Dies ist mit OpenSSL Version 1.1.1c unter Ubuntu.Was @antiduh gesagt hat, funktioniert für mich nur für den Fall eines einzelnen Zwischenzertifikats. Das Hinzufügen von mehr als einem
-untrusted intermediate.pem
im Befehl scheint nicht zu funktionieren. Ich bin mir nicht sicher, ob es sich um eine bestimmte openssl-Version handelt.Laut dem openssl-Dokument: [ https://linux.die.net/man/1/verify]
In meinem Fall habe ich eine Kette wie:
root.pem -> intermediate1.pem -> intermediate2.pem -> john.pem
von cat intermedi1.pem & intermedial2.pem in eine einzelne intermediär-chain.pem-Datei und dann laufen
openssl verify -CAfile root.pem -untrusted intermediate-chain.pem john.pem
funktioniert für mich.Außerdem scheint die in ca-Erweiterung, die Sie benötigen, eingestellt zu sein,
basicConstraints = CA:true
andernfalls stoße ich immer noch auf openssl-Überprüfungsberichtfehler.quelle