Mam trzy certyfikaty w łańcuchu:
- root.pem
- pośredni.pem
- john.pem
Gdy openssl x509 -in [filename] -text -noout
badam je za pomocą , wyglądają dobrze, root.pem wygląda na podpisany przez siebie (Emitent == Temat), a Przedmiotem każdego certyfikatu jest, zgodnie z oczekiwaniami, Emitent kolejnego certyfikatu.
I rzeczywiście mogę zweryfikować łańcuch aż do certyfikatu pośredniego:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
Jednak plik john.pem zawiedzie:
$ 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
Według mojej najlepszej wiedzy oznacza to, że openssl nie może znaleźć emitenta dla pliku pośredniego.pem. Co nie ma sensu, ponieważ root.pem jest rzeczywiście emitentem pośredniego.pem.
czego mi brakuje?
Edit: I początkowo pisał odpowiedź mówiąc, że root.pem i intermediate.pem powinny być łączone w jeden plik, a następnie powinno się użyć tego pliku jako parametr -CAfile
. Jest to NIEPRAWIDŁOWE, ponieważ domyślnie ufa pośredni.pem, jak zauważa Johannes Pille . Przeczytaj link, który opublikował w mojej skasowanej odpowiedzi: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html