En esta entrada voy a explicar los cuatro grandes tipos (formatos) de certificados y aprovecharé para dejar los comandos más comunes de OpenSSL para convertir entre ellos.

Formato PEM

El formato PEM es quizá el más común, ya que es el que por norma general utilizan las CA’s (autoridad certificadora) para proveer sus certificados. Este formato utiliza ASCII como codificación y puede por tanto ser abierto y editado en un editor de texto

El formato PEM incluye extensiones de fichero de tipo .key, .crt, .cer y .pem. Los ficheros con extensión .pem pueden incluir, dentro del mismo fichero, tanto la clave (.key), certificado (.cer/crt) y certificados intermedios.

Formato PKCS#7 

El formato PKCS#7 es un tipo de certificado en el que básicamente se codifica el contenido del mismo en ASCII mediante Base64. Su extensión de fichero es .p7b o .p7c y es un formato que solo puede utilizarse para codificar certificados (no claves privadas)

Formato DER

Es un formato de certificado binario (no texto) utilizado principalmente para servidores web basados en JAVA y tiene la extensión .der o .cer

Formato PKCS#12

Es un formato de certificado binario (no texto) en el cual se incluye dentro del mismo fichero tanto el certificado, la clave privada y los certificados intermedios. Su extensión de fichero es .pfx o .p12 y son certificados utilizados generalmente en Windows.

Bien, tras esta breve presentación, voy a añadir los comandos más básicos de OpenSSL para convertir los diferentes formatos a PEM, y viceversa.

Convertir PKCS#7 a PEM

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

Convertir PEM a PKCS#7

openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer

Convertir PKCS#12 a PEM

openssl pkcs12 -in certificatename.p12 -clcerts -nokeys -out certificatename.crt
openssl pkcs12 -in certificatename.p12 -nocerts -out certificatename.key
#Si la clave anterior está encriptada:
openssl rsa -in certificatename.key -out certificatenamenocrypt.key

Convertir PEM a PKCS#12

openssl pkcs12 -export -out Cert.p12 -in cert.pem -inkey key.pem -passin pass:contraseñapfx -passout pass:contraseñapfx

Convertir PEM a DER

openssl x509 -outform der -in certificatename.pem -out certificatename.der

Convertir DER a PEM

openssl x509 -inform der -in certificatename.der -out certificatename.pem

1 comentario

ismael · 27/11/2020 a las 2:17 pm

Es un magnífico post. A mí me ha ayudado mucho, tanto a entender los distintos tipos de Certificados, como a convertirlos usando los distintos comandos.
Muchas gracias!

Deja una respuesta

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