¿Cuáles son las diferencias entre .pem, .cer y .der?

84

¿Cuáles son las diferencias entre .pem, .cery .der?

Por lo que yo sé, .cercontiene clave pública. ¿Existe algún marco abierto que pueda utilizar para cifrar mis datos con esta clave pública?

LiangWang
fuente
2
Creo que todos son formatos de archivo que pueden almacenar cualquier clave; hay herramientas que pueden convertir entre ellos libremente.
IMSoP
1
@IMSoP Tienes razón, pero para .cer a .der el cpcomando puede funcionar :)
Maarten Bodewes
Eliminé la parte específica de iOS, parece que hay muchos ejemplos, como este y este otro que usa .pem.
Maarten Bodewes

Respuestas:

88

.pem, .cerY .derson todas las extensiones de archivo para archivos que puedan contener un certificado X.509 v3.

La .derextensión

DER es el método de codificación de los datos que componen el certificado. DER en sí mismo podría representar cualquier tipo de datos, pero generalmente describe un certificado codificado o un contenedor CMS.

La estructura de un certificado se describe utilizando el lenguaje de representación de datos ASN.1. BER y DER son métodos de codificación binaria para datos descritos por ASN.1.

La .pemextensión

PEM es un método para codificar datos binarios como una cadena (armadura ASCII). Contiene un encabezado y una línea de pie de página (que especifica el tipo de datos que se codifican y muestra el comienzo / final si los datos están encadenados) y los datos en el medio son los datos de base 64. En el caso de que codifique un certificado, simplemente contendría la codificación base 64 del certificado DER. PEM son las siglas de Privacy Enhanced Mail; el correo no puede contener valores binarios no codificados como DER directamente.

PEM también puede codificar / proteger otros tipos de datos relacionados con certificados, como claves públicas / privadas, solicitudes de certificados, etc. Si el contenido es un certificado X509v3 común, entonces el PEM se codifica como:

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

Tenga en cuenta que un archivo PEM también puede contener una cadena de certificados completa, donde la cadena comienza con el certificado de hoja / final del servicio, seguido del certificado que lo firmó, generalmente hasta el certificado raíz de confianza, pero sin incluirlo. Entonces, si le faltan certificados, es posible que desee echar un vistazo detrás del primero.

La extensión .cero.crt

.cersolo significa certificado. Normalmente son datos codificados en DER, pero Windows también puede aceptar datos codificados en PEM. Necesita echar un vistazo al contenido (por ejemplo, usando la fileutilidad en sistemas posix) para ver qué hay dentro del archivo para estar 100% seguro.

Otros formatos OpenSSL

Eche un vistazo a esta respuesta para obtener una lista más extensa de lo que es compatible con OpenSSL.


Para usar la clave pública contenida en el certificado (y firmada por la firma en el certificado), debe usar cualquier biblioteca que analice certificados X.509 y realice el cifrado RSA. Puede usar una herramienta que detecte / maneje la codificación PEM o primero podría convertir el certificado a DER eliminando la codificación PEM.

La línea de comando de OpenSSL contiene muchas opciones para convertir entre PEM y DER, imprimir información de certificado de alto nivel o analizar el ASN.1 para obtener una vista de bajo nivel de lo que hay allí.

Detalles

Como la mayoría de las estructuras ASN.1, el certificado codificado DER siempre comienza con un byte 30que es la codificación de etiqueta de un ASN.1 SEQUENCE. Si ve mucha repetición en el archivo, entonces está bien; es solo la estructura la que está estrictamente definida.

Del mismo modo, la base 64 dentro de un archivo codificado PEM siempre comienza con la letra Mcomo un ASN.1 SEQUENCEcomienza con un byte 30, por lo que los primeros 6 bits son 001100, que se traduce en el número 12, que es el índice de la letra M, el decimotercera letra del alfabeto.

Maarten Bodewes
fuente