Chuleta de comandos OpenSSL

Esta es una lista en construcción de comandos que me resultan útiles para trabajar con certificados en el día a día. Es necesario tener instalada la herramienta OpenSSL.

Extraer la clave privada de un .p12 (PFX)

De esta tengo dos variantes. Podemos querer guardar la clave privada cifrada o sin cifrar (con una frase que elijamos). P12 y PFX nos sirven indistintamente. PFX es un contenedor bastante popular en el que algunas entidades certificadoras te ofrecen la descarga de los certificados que has comprado.

Extraer la private key de un PFX y guardarla cifrada

Si queremos guardar la clave privada protegida por contraseña, usaremos este comando openssl

openssl pkcs12 -in NombreArchivo.p12 -nocerts -out NombreArchivo.key

Extraer la private key de un P12 y guardarla sin cifrar

Si tenemos un lugar seguro donde almacenar la contraseña o debemos usarla con un software que necesita utilizarla de forma no interactiva (en el arranque de un servidor web, por ejemplo, usaremos este otro comando openssl.

openssl pkcs12 -in NombreArchivo.p12 -nocerts -nodes -out NombreArchivo.key

Extraer el certificado de un .p12 (PFX)

Para extraer el certificado de su contenedor p12 podemos usar el siguiente comando openssl

openssl pkcs12 -in NombreArchivo.p12 -nokeys -out NombreArchivo.crt

Conocer la fecha de caducidad de un certificado P12 o PFX

Para saber cuando caduca un certificado que tenemos en formato P12 o PFX, podemos usar el siguiente comando openssl. Necesitamos conocer la passphrase o contraseña con que se ha protegido el archivo.

openssl pkcs12 -in NombreArchivo.p12 -nokeys |openssl x509 -noout -enddate
 Enter Import Password: xxxx
 notAfter=Dec 10 16:45:28 2019 GMT

Obtener la fecha de caducidad de un certificado SSL en un servidor remoto

Para conocer la fecha de caducidad de un certificado SSL instalado en un servidor remoto podemos usar la misma herramienta openssl pidiendo que se conecte a un host y puerto concretos:

echo ""| openssl s_client -servername javierin.com -connect javierin.com:443 2>/dev/null |openssl x509 -noout -enddate
notAfter=Sep 17 08:51:37 2019 GMT

Firmar un archivo con un certificado SMIME

Si queremos firmar un archivo usando un certificado SMIME, deberemos usar el siguiente comando openssl.

openssl smime -sign -signer NombreArchivo.crt -inkey NombreArchivo.key -nodetach -outform der -in ArchivoAFirmar.ext -out ArchivoAFirmar.ext.firmado

Si hay más comandos que quieres incluir en la lista porque resultan especialmente útiles, no dudes en dejar un comentario!

openssl comandos