¿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 el propósito de cada formato de archivo.
Me preguntaba si la buena gente aquí en ServerFault podría proporcionar alguna aclaración sobre este asunto.
1361
3
El SSL existe desde hace mucho tiempo, por lo que se podría pensar que existen formatos de contenedores acordados. Y tiene razón, los hay. Hay demasiados estándares. Así que esto es lo que yo sé, y estoy seguro de que otros aportarán su opinión.
/etc/ssl/certs
), o puede incluir una cadena de certificados completa incluyendo la clave pública, la clave privada y los certificados raíz. 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 proviene de Privacy Enhanced Mail (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./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.openssl pkcs12 -in archivo-a-convertir.p12 -out archivo-convertido.pem -nodos
Algunos otros formatos que aparecen de vez en cuando:
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....keystore
como extensión en su lugar. A diferencia de los certificados de estilo .pem, este formato tiene una forma definida* de incluir certificados de ruta de certificación.En resumen, hay cuatro formas diferentes de presentar los certificados y sus componentes:
Espero que esto ayude.
PEM por sí solo 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 (reglas de codificación distinguidas) de ASN.1, 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 de 7 bits.
El documento RFC1422 tiene más detalles sobre el estándar PEM en relación con las claves y los certificados.
A veces un archivo
.crt
ya es un.pem
. Véase: https://stackoverflow.com/questions/991758/openssl-pem-key