Qu'est-ce qu'un fichier PEM et comment est-il utilisé?

Contenu

Personne déverrouillant le fichier numérique avec la clé.

PEM est un format de fichier conteneur souvent utilisé pour stocker des clés cryptographiques. Il est utilisé pour beaucoup de choses différentes, car il définit simplement la structure et le type de codage du fichier utilisé pour enregistrer certaines données.

Qu'est-ce qu'un fichier PEM?

Le PEM n'est qu'un standard; contiennent du texte et le format dicte que les fichiers PEM commencent par …

-----COMMENCER <taper>-----

... Et terminez par:

-----FINIR <taper>-----

Tout le reste est encodé en base64 (lettres majuscules et minuscules, chiffres, +, et /). Cela forme un bloc de données qui peut être utilisé dans d'autres programmes. Un seul fichier PEM peut contenir plusieurs blocs.

Cela peut être utilisé pour représenter toutes sortes de données, mais il est couramment utilisé pour coder les fichiers clés, telles que les clés RSA utilisées pour SSH et les certificats utilisés pour le cryptage SSL. Le fichier PEM vous dira à quoi il sert dans l'en-tête; par exemple, vous pourriez voir un fichier PEM qui commence par ...

-----COMMENCER CLÉ PRIVÉE RSA -----

... Suivi d'une longue chaîne de données, quelle est la vraie clé privée RSA.

Fichiers PEM avec certificats SSL

Les fichiers PEM sont utilisés pour stocker les certificats SSL et leurs clés privées associées. Il existe plusieurs certificats dans la chaîne SSL complète et ils fonctionnent dans cet ordre:

  • Le certificat d'utilisateur final, qu'une autorité de certification (CETTE) attribue à votre nom de domaine. C'est le fichier que nginx et Apache utilisent pour chiffrer HTTPS.
  • Jusqu'à quatre certificats intermédiaires optionnels, accordés aux plus petites autorités de certification par les autorités supérieures.
  • Le certificat racine, le plus haut certificat de la chaîne, qui est auto-signé par l’autorité de certification principale.

Dans la pratique, chaque certificat est répertorié dans un fichier pem, utilisation de blocs distincts:

-----CERTIFICAT DE DÉBUT-----
  //end-user
-----END CERTIFICATE-----
-----CERTIFICAT DE DÉBUT-----
  //intermediate
-----END CERTIFICATE-----
-----CERTIFICAT DE DÉBUT-----
  //root
-----END CERTIFICATE-----

Vous recevrez ces fichiers de votre fournisseur SSL pour une utilisation sur votre serveur Web. Par exemple, LetsEncrypt’s certbot génère les certificats suivants, placé dans /etc/letsencrypt/live/your-domain-name/ :

cert.pem chain.pem fullchain.pem privkey.pem
  • cert.pem est le certificat de l’utilisateur final.
  • chain.pem est le reste de la chaîne; pour ce cas, c'est juste le certificat racine de LetsEncrypt.
  • fullchain.pem il est cert.pem et chain.pem ensemble. C'est le fichier passé à nginx avec le ssl_certificate directif.
  • privkey.pem est une clé privée RSA générée avec le certificat.

Ils peuvent également utiliser le .crt extension; Si vous avez auto-signé un certificat avec OpenSSL, vous obtiendrez un fichier CRT au lieu de PEM, même si le contenu restera le même et l'usage sera le même.

Pour utiliser vos certificats, vous devrez les passer en paramètres pour votre serveur web. Para nginx, vous voudrez spécifier le ssl_certificate (le fichier PEM de chaîne complète), et ssl_certificate_key (le fichier PEM de clé privée RSA), après avoir activé SSL:

ssl_certificate /etc/letsencrypt/live/votredomaine/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/votredomaine/privkey.pem;

Pour Apache, les paramètres sont simplement les mêmes, mais vous devrez utiliser le SSLCertificateFile et SSLCertificateKeyFile directives:

SSLCertificateFile /etc/letsencrypt/live/yourdomain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain/privkey.pem

Fichiers PEM avec SSH

Les fichiers PEM sont également utilisés pour SSH. Si, à tout moment, vous avez couru ssh-keygen pour utiliser ssh sans mot de passe, ton ~/.ssh/id_rsa est un fichier PEM, seulement sans l'extension.

En particulier, Amazon Web Services vous fournit un fichier PEM qui contient une clé privée chaque fois que vous créez une nouvelle instance, et vous devez utiliser cette clé pour pouvoir vous connecter en SSH à de nouvelles instances EC2.

EN RELATION: Comment ajouter votre fichier EC2 PEM à votre trousseau SSH

Vous devez utiliser le -i drapeau avec ssh pour spécifier que vous souhaitez utiliser cette nouvelle clé au lieu de id_rsa:

ssh -i keyfile.pem root@host

Cela vous permettra de vous connecter au serveur normalement, mais vous devrez spécifier ce drapeau à chaque fois.

Une méthode plus simple consiste à ajouter la clé privée à votre agent ssh avec ssh-add:

ssh-add keyfile.pem

Malgré cela, cela ne persiste pas au redémarrage, vous devrez donc exécuter cette commande au démarrage ou l'ajouter à votre trousseau macOS.

De toute façon, de plus, vous pouvez simplement ajouter votre clé publique primaire à l'instance ~/.ssh/authorized_keys après vous être connecté une fois, mais cette méthode devrait fonctionner immédiatement pour toute nouvelle instance à l'avenir.

Il est important de noter que vous devez toujours bloquer votre serveur SSH même si vous utilisez vous-même des clés..

EN RELATION: Qu'est-ce que le transfert d'agent SSH et comment est-il utilisé?

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.