Qué es archivo PEM

¿Qué es un archivo PEM y cómo se utiliza?

  • Los archivos PEM no son demasiado comunes, pero es mejor poder reconocerlos y sacar provecho de ellos en las diferentes circunstancias en las que pueden llegar a hacerse presentes
  • Los certificados SSL y protocolos SSH son de sus usos más comunes, cada uno con sus particularidades

En la medida en la que llevamos tiempo trabajando con ordenadores, es posible que nos encontremos con archivos cuyos formatos no nos sean familiares. Sin importar las circunstancias bajo las cuales nos hayamos topado con ellos, probablemente querrás poder aprovecharlos al máximo de sus capacidades. Por lo tanto, en esta ocasión vamos a centrarnos en qué es un archivo PEM y cómo se utiliza en PC, para que nunca más tengas dudas al respecto.

Lo primero que podemos decir en este sentido, es que PEM es un formato de archivos que contiene información, y que muy a menudo se usa para almacenar en su interior claves criptográficas. Su adopción es muy variable en diferentes sectores, y todo dependerá de la estructura y el tipo de codificación del archivo en cuestión.

¿Cómo distinguir un archivo PEM de otro?

Por lo general, esta clase de archivos comienzan con esta línea:

-----BEGIN <type>-----

Y, de nuevo por lo general, esta clase de archivos finalizan con esta línea:

-----END <type>-----

Luego, todo lo que aparece entremedio de estas dos líneas, suele estar codificado en base64, de manera que se conforma un bloque de datos que puede ejecutarse en otros programas. Cada archivo PEM puede poseer en su interior varios bloques, por lo que su potencial dependerá, a su vez, del contenido de cada uno de ellos.

En otras palabras, eso significa que un archivo PEM puede representar toda clase de datos aunque, como decíamos al inicio, lo más frecuente es que se los use para codificar archivos de claves, como las claves RSA que se usan para SSH y los certificados que se usan para el cifrado SSL. Su encabezado tiende a anticipar esta información.

Archivos PEM con certificados SSL

En los últimos tiempos, han ganado mucho terreno los archivos PEM que se utilizan para almacenar certificados SSL y sus claves privadas asociadas. Hay varios certificados en la cadena SSL completa, y podemos diferenciarlos:

  • El certificado de usuario final, que una autoridad de certificación asigna a su nombre de dominio
  • Hasta cuatro certificados intermedios opcionales, otorgados a autoridades de certificación más pequeñas
  • El certificado raíz, el certificado más alto de la cadena, que está autofirmado por la autoridad principal del caso

En la práctica, estos estándares para encriptación web lucen de la siguiente forma:

-----BEGIN CERTIFICATE-----
  //end-user
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
  //intermediate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
  //root
-----END CERTIFICATE-----

No debería extrañarte que, en algún caso, recibas estos archivos de un proveedor de SSL para tu servidor web.

En otras ocasiones, por ejemplo cuando tú mismo hayas autofirmado un certificado con OpenSSD, obtendrás un archivo de tipo CRT y no PEM. El contenido y el uso serán iguales, pero cambiará su formato a la vista.

Archivos PEM con protocolos SSH

Los archivos PEM también se utilizan para el protocolo SSH. Si alguna vez has ejecutado ssh-keygen para usar ssh sin una contraseña, su ~/.ssh/id_rsa es un archivo PEM. La diferencia es que no poseen extensión alguna.

En particular, Amazon Web Services es una de las firmas que nos otorga un archivo PEM que contiene una clave privada cada vez que crea una nueva instancia. Por lo tanto, usamos claves para SSH en nuevas instancias EC2.

Si, en algún punto, quieres usar la nueva clave, deberás usar la -i con ssh para ser específico, así

ssh -i keyfile.pem root @ host

Esto le permitirá iniciar sesión en el servidor de la forma habitual, pero deberás aclarar el indicador cada vez.

De este modo, debemos decir que existe un método más sencillo: agregar la clave privada a tu ssh-agent, así:

ssh-agregar keyfile.pem

No obstante, debes saber que esta modificación no permanece allí en los reinicios, por lo que deberás ejecutar el comando al inicio o agregarlo en tu Llavero de MacOS, para no tener que insistir constantemente en la operación.

Por otro lado, puedes agregar tu clave pública principal a la instancia ~/.ssh/authorized_keys después de haber iniciado sesión una, aunque se trata de una solución no tan segura como las demás.

Incluso, aún deberías bloquear el servicio SSH, también cuando estés usando las claves tú mismo.


Deja un comentario