OpenSSL – Cómo convertir certificados SSL a varios formatos – PEM CRT CER PFX P12 y más

En este post, que forma parte de nuestra serie «cómo gestionar certificados SSL en sistemas Windows y Linux», mostraremos cómo convertir un certificado SSL a los formatos más comunes definidos en los estándares X.509: el formato PEM y el formato PKCS#12, también conocido como PFX. El proceso de conversión se llevará a cabo mediante el uso de OpenSSL, una herramienta gratuita disponible para plataformas Linux y Windows.

Antes de entrar en los comandos de consola de OpenSSL recomendamos echar un vistazo a nuestro resumen de X.509 y los formatos de archivo de certificados SSL más populares: CER, CRT, PEM, DER, P7B, PFX, P12, etc.

Instalación de OpenSSL

Lo primero que hay que hacer es asegurarse de que el sistema tiene instalado OpenSSL: se trata de una herramienta que proporciona una implementación de código abierto de los protocolos SSL y TLS y que puede utilizarse para convertir los archivos de certificados en los formatos más populares basados en X.509 v3 más populares.

OpenSSL en Linux

Si estás usando Linux, puedes instalar OpenSSL con el siguiente comando de consola YUM:

Shell

> yum install openssl

Si tu distribución está basada en APT en lugar de YUM, puedes utilizar el siguiente comando en su lugar:

1
> apt-get install openssl

OpenSSL en Windows

Si usas Windows, puedes instalar una de las muchas implementaciones de código abierto de OpenSSL: la que podemos recomendar es Win32 OpenSSL de Shining Light Production, disponible como versión ligera o completa, ambas compiladas en modo x86 (32 bits) y x64 (64 bits) . Puedes instalar cualquiera de estas versiones, siempre que tu sistema las soporte.

IMPORTANTE: OpenSSL para Windows requiere el runtime de Visual C++ 2008 Redistributables para poder funcionar.

OpenSSL es básicamente una aplicación de consola, lo que significa que la utilizaremos desde la línea de comandos: una vez finalizado el proceso de instalación, es importante comprobar que la carpeta de instalación (C:\Archivos de programa\NOpenSSL-Win64\Npara la versión de 64 bits) ha sido añadida al PATH del sistema (Panel de control > Sistema> Avanzado > Variables de entorno): si no es el caso, recomendamos encarecidamente añadirla manualmente, para evitar escribir la ruta completa del ejecutable cada vez que tengas que lanzar la herramienta.

Una vez instalado OpenSSL, podremos utilizarlo para convertir nuestros certificados SSL en varios formatos.

De PEM (pem, cer, crt) a PKCS#12 (p12, pfx)

Este es el comando de consola que podemos utilizar para convertir un archivo de certificado PEM (extensiones .pem, .cer o .crt), junto con su clave privada (.key), en un único archivo PKCS#12 (extensiones .p12 y .pfx):

Shell

1
> openssl pkcs12 -export -in certificado.crt -inkey privatekey.key -out certificate.pfx

Si también tienes un archivo de certificados intermedios (por ejemplo, CAcert.crt) , puede añadirlo al «bundle» utilizando el parámetro del comando -certfile de la siguiente manera:

Shell

1
> openssl pkcs12 -export -in certificado.crt -inkey privatekey.key -out certificate.pfx -certfile CAcert.cr

De PKCS#12 a PEM

Si necesita «extraer» un certificado PEM (.pem, .cer o .crt) y/o su clave privada (.key)de un único archivo PKCS#12 (.p12 o .pfx), necesita emitir dos comandos.

El primero es para extraer el certificado:

Shell

1
> openssl pkcs12 -en el certificado.pfx -nokey -out certificado.crt

Y una segunda sería recuperar la clave privada:

Shell

1
> openssl pkcs12 -in certificado.pfx -out privatekey.key

IMPORTANTE: la clave privada obtenida con el comando anterior estará en formato cifrado: para convertirla en formato RSA, necesitarás introducir un tercer comando:

Shell

1
> openssl rsa -in privatekey.key -out privatekey_rsa.key

Huelga decir que, dado que PKCS#12 es un formato protegido por contraseña, para ejecutar todos los comandos anteriores se le pedirá la contraseña que se ha utilizado al crear el archivo .pfx.

Desde DER (.der, cer) a PEM

Shell

1
> openssl x509 -inform der -in certificado.cer -out certificado.pem

De PEM a DER

Shell
1
> openssl x509 -certificado outform der -in.pem -out certificado.der

De PEM a PKCS#7 (.p7b, .p7c)

Shell
1
> openssl crl2pkcs7 -nocrl -certfile certificado.pem -out certificado.p7b -certfile CAcert.cer

De PKCS#7 a PEM

1
> openssl pkcs7 -print_certs -en el certificado.p7b -out certificado.pem

De PKCS#7 a PFX

Shell
1
2
>

openssl pkcs7 -print_certs -in nombredelcertificado.p7b -out certificatename.cer

> openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer

Convertidores SSL en línea

Si no puedes (o no quieres) instalar OpenSSL, puedes convertir tus certificados SSL utilizando una de estas herramientas en línea basadas en la web:

  • Herramienta de conversión de certificados SSL de SSLShopper.com
  • SSL Converter by NameCheap
  • Ambos funcionan realmente bien y pueden convertir la mayoría, si no todos, los formatos detallados anteriormente: al mismo tiempo, tienes que pensar seriamente en las implicaciones de seguridad que conlleva subir tus certificados SSL (y posiblemente sus claves privadas) a un servicio de terceros. Por muy fiables y seguros que sean esos dos sitios a día de hoy, seguimos sin recomendar ese movimiento.

    Conclusiones

    Esto es todo, al menos por el momento: esperamos que estos comandos sean útiles para aquellos desarrolladores y administradores de sistemas que necesiten convertir certificados SSL en los distintos formatos que requieren sus aplicaciones.

    ¡Hasta la próxima!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *