Verificar si un certificado coincide con el CSR que se mandó a firmar
Cuando generamos un CSR (Certificate Signing Request) y lo enviamos a firmar por una entidad de confianza debemos quedar a la espera de recibir dicho certificado para ingresarlo en nuestro sistema y configurarlo. Una vez llega dicho certificado debemos validar si en efecto es el certificado correcto, es decir, que fue generado con base en nuestro CSR.
Paso 1: Obtener la llave pública
Lo primero es verificar si tenemos acceso a la llave privada o solamente tenemos acceso a la parte pública que genero el CSR. Si por cualquier razón deseas enviar la parte pública a un colega para dicha verificación necesitarás ejecutar el siguiente comando para generarla.
openssl rsa -in private_key.pem -pubout > public_key.pem
Paso 2: Obtener el hash MD5 de la llave
Para obtener este hash podemos utilizar el siguiente comando sobre la llave pública obtenida anteriormente.
openssl pkey -pubin -in public_key.pem -pubout -outform pem | openssl md5
En caso de tener acceso directo a la llave privada podrías utilizar el siguiente comando.
openssl pkey -in private_key.pem -pubout -outform pem | openssl md5
Obtendremos un resultado como el siguiente:
2c2dac216dfb0b4e4304941e461f5714
Paso 3: Obtener el hash MD5 del certificado o cadena de certificados
Para obtener este hash podemos utilizar el siguiente comando sobre el certificado o cadena de certificados a validar.
openssl x509 -in certificate.pem -pubkey -noout -outform pem | openssl md5
Obtendremos un resultado como el siguiente:
2c2dac216dfb0b4e4304941e461f5714
Paso 4: Verificar la coincidencia del hash
Si el hash resulta ser el mismo tanto para la llave pública como para el certificado significa que dicho certificado fue generado para un CSR creado por dicha llave.