Pourquoi ne puis-je pas vérifier cette chaîne de certificats ?
J'ai trois certificats dans une chaîne :
- racine.pem
- intermédiaire.pem
- jean.pem
Quand je les examine en utilisant openssl x509 -in [filename] -text -noout
ils ont l'air bien, root.pem semble être auto-signé (Émetteur == Sujet), et le Sujet de chaque certificat est l'émetteur du suivant, comme prévu.
Et en effet je peux vérifier la chaîne jusqu'au certificat intermédiaire:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
Cependant, john.pem échoue :
$ 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
Au meilleur à ma connaissance, cela signifie qu'openssl est incapable de trouver l'émetteur pour intermédiaire.pem. Ce qui n'a pas de sens depuis root.pem est en effet l'émetteur des intermédiaires.pem.
Qu'est-ce qui me manque ?
Edit: J'avais initialement posté une réponse disant que root.pem et intermédiaire.pem doit être concaténé dans un fichier, puis il faut utiliser ce fichier comme paramètre pour -CAfile
. C'est FAUX, car cela fait implicitement confiance à l'intermédiaire.pem, as Johannes Pille souligner. Lisez le lien qu'il a posté dans ma réponse supprimée: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html