Ho tre certificati in una catena:
- root.pem
- intermediate.pem
- john.pem
Quando li esamino usando openssl x509 -in [filename] -text -noout
sembrano a posto, root.pem sembra che sia autofirmato (Emittente == Oggetto), e l'oggetto di ciascun certificato è l'Emittente di quello successivo, come previsto.
E infatti posso verificare la catena fino al certificato intermedio:
$ openssl verify -CAfile root.pem root.pem
root.pem: OK
$ openssl verify -CAfile root.pem intermediate.pem
intermediate.pem: OK
Tuttavia, john.pem non riesce:
$ 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
Per quanto ne so, ciò significa che openssl non è in grado di trovare l'emittente per intermedio.pem. Il che non ha senso poiché root.pem è in effetti l'emittente di intermedio.pem.
Cosa mi sto perdendo?
Modifica: avevo originariamente pubblicato una risposta dicendo che root.pem e intermedio.pem dovevano essere concatenati in un file, e quindi si dovrebbe usare questo file come parametro per -CAfile
. Questo è SBAGLIATO, perché si fida implicitamente di intermedio.pem, come sottolinea Johannes Pille . Leggi il link che ha pubblicato nella mia risposta eliminata: https://mail.python.org/pipermail/cryptography-dev/2016-August/000676.html