1666 votos

¿Qué es un archivo Pem y en qué se diferencia de otros formatos de archivos de claves generados por OpenSSL?

Soy responsable del mantenimiento de dos servidores Debian. Cada vez que tengo que hacer algo con certificados de seguridad, busco tutoriales en Google y me pongo a machacar hasta que por fin funciona.

Sin embargo, en mis búsquedas me encuentro a menudo con diferentes formatos de archivo ( .key , .csr , .pem ) pero nunca he podido encontrar una buena explicación de cuál es la finalidad de cada formato de archivo.

Me preguntaba si la buena gente aquí en ServerFault podría proporcionar alguna aclaración sobre este asunto.

4 votos

2030voto

sysadmin1138 Puntos 86362

SSL ha existido durante el tiempo suficiente como para pensar que habrá formatos de contenedores acordados. Y tienes razón, los hay. Demasiados estándares como sucede. Así que esto es lo que yo sé, y estoy seguro de que otros se sumarán.

  • .csr - Se trata de una solicitud de firma de certificado. Algunas aplicaciones pueden generarlas para enviarlas a las autoridades de certificación. El formato actual es PKCS10, que se define en RFC 2986 . Incluye algunos/todos los detalles clave del certificado solicitado, como el asunto, la organización, el estado, etc., así como el clave pública del certificado a firmar. Estos son firmados por la CA y se devuelve un certificado. El certificado devuelto es el público certificado (que incluye la clave pública pero no la privada), que a su vez puede estar en un par de formatos.
  • .pem - Definido en las RFC 1421 a través de 1424 Este es un formato de contenedor que puede incluir sólo el certificado público (como en el caso de las instalaciones de Apache) y los archivos de certificados de CA /etc/ssl/certs ), o puede incluir una cadena de certificados completa, incluyendo la clave pública, la clave privada y los certificados root. De forma confusa, también puede codificar un CSR (por ejemplo, como se utiliza aquí ) ya que el formato PKCS10 puede traducirse a PEM. El nombre es de Correo con privacidad mejorada (PEM) , un método fallido para el correo electrónico seguro, pero el formato contenedor que utilizaba sigue vivo, y es una traducción a base64 de las claves x509 ASN.1.
  • .clave - Se trata de un archivo con formato PEM que contiene sólo la clave privada de un certificado específico y es sólo un nombre convencional y no uno estandarizado. En las instalaciones de Apache, esto suele residir en /etc/ssl/private . Los derechos de estos archivos son muy importantes, y algunos programas se negarán a cargar estos certificados si están mal configurados.
  • .pkcs12 .pfx .p12 - Definido originalmente por la RSA en el Normas de criptografía de clave pública (abreviado PKCS), la variante "12" fue originalmente mejorada por Microsoft, y posteriormente presentada como RFC 7292 . Se trata de un formato contenedor con contraseña que contiene pares de certificados públicos y privados. A diferencia de los archivos .pem, este contenedor está totalmente cifrado. Openssl puede convertirlo en un archivo .pem con claves públicas y privadas: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

Algunos otros formatos que aparecen de vez en cuando:

  • .der - Una forma de codificar la sintaxis ASN.1 en binario, un archivo .pem no es más que un archivo .der codificado en Base64. OpenSSL puede convertirlos en .pem ( openssl x509 -inform der -in to-convert.der -out converted.pem ). Windows los ve como archivos de certificado. Por defecto, Windows exportará los certificados como archivos con formato .DER con una extensión diferente. Como...
  • .cert .cer .crt - Un archivo con formato .pem (o raramente .der) con una extensión diferente, una que es reconocida por el Explorador de Windows como un certificado, que no es .pem.
  • .p7b .keystore - Definido en RFC 2315 como PKCS número 7, este es un formato utilizado por Windows para el intercambio de certificados. Java lo entiende de forma nativa, y a menudo utiliza .keystore como una extensión en su lugar. A diferencia de los certificados de estilo .pem, este formato tiene un definido manera de incluir los certificados de ruta de certificación.
  • .crl - Una lista de revocación de certificados. Las Autoridades de Certificación las producen como una forma de desautorizar los certificados antes de su vencimiento. A veces se pueden descargar de los sitios web de las CA.

En resumen, hay cuatro formas diferentes de presentar los certificados y sus componentes:

  • PEM - Regido por RFCs, es utilizado preferentemente por el software de código abierto. Puede tener varias extensiones (.pem, .key, .cer, .cert, etc.)
  • PKCS7 - Un estándar abierto utilizado por Java y soportado por Windows. No contiene material de clave privada.
  • PKCS12 - Un estándar privado de Microsoft que se definió posteriormente en una RFC que proporciona mayor seguridad frente al formato PEM de texto plano. Puede contener material de clave privada. Es utilizado preferentemente por los sistemas Windows, y puede ser convertido libremente al formato PEM mediante el uso de openssl.
  • DER - El formato principal de PEM. Es útil pensar en él como una versión binaria del archivo PEM codificado en base64. No se utiliza mucho fuera de Windows.

Espero que esto ayude.

375 votos

Lo bueno de las normas es que hay tantas para elegir...

45 votos

.crt es otra extensión común para .cert y .cer

52 votos

PEM es un formato de archivo que puede consistir en un certificado (también conocido como clave pública), una clave privada o incluso ambos concatenados. No preste demasiada atención a la extensión del archivo; significa Privacy Enhanced Mail, un uso que no se vio mucho, pero el formato de archivo se mantuvo.

171voto

Yar Puntos 25421

PEM por sí mismo no es un certificado, es sólo una forma de codificar datos. Los certificados X.509 son un tipo de datos que suele codificarse con PEM.

PEM es un certificado X.509 (cuya estructura se define utilizando ASN.1), codificado utilizando el DER ASN.1 (reglas de codificación distinguidas), luego pasado por la codificación Base64 y metido entre líneas de anclaje de texto plano (BEGIN CERTIFICATE y END CERTIFICATE).

Se pueden representar los mismos datos utilizando las representaciones PKCS#7 o PKCS#12, y para ello se puede utilizar la utilidad de línea de comandos openssl.

Las ventajas obvias de PEM es que es seguro para pegar en el cuerpo de un mensaje de correo electrónico porque tiene líneas de anclaje y es limpio de 7 bits.

RFC1422 tiene más detalles sobre el estándar PEM en relación con las claves y los certificados.

1 votos

¿Cómo se hace esto "usando la línea de comandos openssl"?

10 votos

Para convertir un archivo DER (.crt .cer .der) a PEM: openssl x509 -inform der -in cert.cer -out cert.pem . Para convertir un archivo PEM a DER: openssl x509 -outform der -in cert.pem -out certi.der . Para convertir un archivo PKCS#12 (.pfx .p12) que contiene una clave privada y certificados a PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes . Para convertir un archivo de certificado PEM y una clave privada a PKCS#12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt Desde aquí

0 votos

"PEM por sí solo no es un certificado..." y "PEM es un certificado X.509..." son frases un poco controvertidas.

62voto

mgold Puntos 231

A veces un .crt es ya un archivo .pem . Ver: https://stackoverflow.com/questions/991758/openssl-pem-key

4 votos

Efectivamente, me he dado cuenta hoy de esto. Tuve que introducir un certificado PEM en rackspace loadbalancer y me preguntaba si el crt generado estaba en ese formato. Pero funcionó así, así que esa fue mi conclusión también, la mayoría de estos .crt vienen en formato PEM parece.

2 votos

@GlennPlas se centran en lugar de la contenido del archivo, no su nombre o extensión. Podría llamarse .foobar para todo lo que importa...

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: