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!