Estoy enseñando una clase sobre cadenas de certificados, así que descargo la cadena de www.google.com que tiene 4 certificados. Quiero demostrar cómo funcionan las dependencias desde el emisor al sujeto, demostrando que cada entidad firma el certificado del que está debajo.
Llame a los certificados g3 , g2 , g1 y g0 donde g3 es una raíz autofirmada, g2 y g1 son CA intermedios y g0 es un certificado de hoja . Intento esto:
$ openssl verify g0
error 20 at 0 depth lookup:unable to get local issuer certificate
Esto tiene sentido: la verificación falla porque se trata de un certificado de hoja sin CA dada. Así que a continuación intento esto:
$ openssl verify -CAfile g1 g0
g0: OK
¡Genial! Con el intermedio, ahora funciona! Continuando por la cadena:
$ openssl verify -CAfile g2 g1
g1: OK
¡Impresionante! Parece que g1 está firmado correctamente por g2 . Pero esto no es realmente lo que está siendo verificado. Porque g1 también está aparentemente firmado por g3 :
$ openssl verify -CAfile g3 g1
g1: OK
Y, de hecho, g1 ni siquiera necesita una CA:
$ openssl verify g1
OK
¡Parece que cualquier certificado con CA establecido en Verdadero en restricciones básicas siempre pasará la verificación!
Pregunta: ¿Cómo verifico que g2 realmente firmó g1 usando OpenSSL desde el CLI? ¿Y es este otro error de OpenSSL? ¿O simplemente un comportamiento contraintuitivo?