Formatos de certificados y conversiones con OpenSSL

SSL es un protocolo critográfico que proporciona seguridad a las comunicaciones. Para ello hace uso de certificados X.509. Los formatos de estos certificados pueden ser:

  • PEM, extensión .pem, .crt, o .key.
  • DER, extensión .der, .cer o .crt.
  • PKCS#7, extensión .p7b o p7c.
  • PKCS#12, extensión .p12 o .pfx.

Formatos de certificados

PEM (.pem, .crt o .key)

Es el formato más común. Se almacena como ASCII codificado en Base64 y encerrado entre las sentencias -----BEGIN CERTIFICATE----- y -----END CERTIFICATE----- para la parte pública del certificado o entidades de certificación intermedias; y -----BEGIN PRIVATE KEY----- y -----END PRIVATE KEY----- para la parte privada.

Su uso es común en servidores HTTP tales como Apache, Nginx o Lighhtp; con archivos separados .crt para la parte pública y entidades de certificación intermedias, y un archivo .key para la clave privada.

DER (.der, .cer o .crt)

Se almacena como binario codificado en Base64. Es común en plataformas Java.

PKCS#7 (.p7b o p7c)

Es similar al formato PEM. Se almacena como ASCII codificado en Base64 y encerrado entre las sentencias -----BEGIN PKCS7----- y -----END PKCS7-----. Solo contiene la parte pública (certificado y entidades de certificación intermedias), la parte privada no puede ser incluida en PKCS#7.

Su uso es común en Windows y Java Tomcat.

PKCS#12 (.p12 o .pfx)

Se almacena como binario englobando la parte pública (certificados y entidades de certificación intermedias) y privada en un único archivo. Si este archivo incluye la parte privada (clave privada) el archivo será cifrado con criptografía simétrica por lo que será obligatorio el uso de una contraseña.

Su uso es común en Windows.

Conversión entre formatos de certificados con OpenSSL

Convertir certificado PEM a…

Certificado DER

1
openssl x509 -outform der -in certificate.pem -out certificate.der

Certificado P7B

1
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer

Certificado PFX

1
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

Convertir certificado DER a…

Certificado PEM

1
openssl x509 -inform der -in certificate.cer -out certificate.pem

Convertir certificado P7B a…

Certificado PEM

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

Certificado PFX

1
2
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

Convertir certificado PFX a…

Certificado PEM

1
2
3
openssl pkcs12 -in certificate.pfx -out certificate.crt -nodes
openssl rsa -in certificate.crt -out certificate.key
openssl pkcs12 -in certificate.pfx -out certificate.crt -nodes -nokeys

Entradas de interés

Contenidos
  1. 1. Formatos de certificados
    1. 1.1. PEM (.pem, .crt o .key)
    2. 1.2. DER (.der, .cer o .crt)
    3. 1.3. PKCS#7 (.p7b o p7c)
    4. 1.4. PKCS#12 (.p12 o .pfx)
  2. 2. Conversión entre formatos de certificados con OpenSSL
    1. 2.1. Convertir certificado PEM a…
      1. 2.1.1. Certificado DER
      2. 2.1.2. Certificado P7B
      3. 2.1.3. Certificado PFX
    2. 2.2. Convertir certificado DER a…
      1. 2.2.1. Certificado PEM
    3. 2.3. Convertir certificado P7B a…
      1. 2.3.1. Certificado PEM
      2. 2.3.2. Certificado PFX
    4. 2.4. Convertir certificado PFX a…
      1. 2.4.1. Certificado PEM