Tengo tres certificados en una cadena:
- root.pem
- intermedio.pem
- john.pem
Cuando los examino usando, openssl x509 -in [filename] -text -noout
se ven bien, root.pem parece que está autofirmado (Emisor == Asunto), y el Asunto de cada certificado es el Emisor del siguiente, como se esperaba.
Y de hecho puedo verificar la cadena hasta el certificado intermedio:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
Sin embargo, john.pem falla:
$ 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
Que yo sepa, esto significa que openssl no puede encontrar el emisor de intermediario.pem. Lo cual no tiene sentido ya que root.pem es de hecho el emisor de intermediario.pem.
¿Qué me estoy perdiendo?
Editar: Originalmente había publicado una respuesta que decía que root.pem e intermedio.pem deberían concatenarse en un archivo, y luego uno debería usar este archivo como parámetro para -CAfile
. Esto es INCORRECTO, porque esto confía implícitamente en intermed.pem, como señala Johannes Pille . Lea el enlace que publicó en mi respuesta eliminada: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html