Verificar si un certificado coincide con el CSR que se mandó a firmar

Author
By Darío Rivera
Posted on 2021-08-23 in OpenSSL

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.


Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.