Qu'est-ce qu'un fichier PEM et comment l'utilisez-vous ?

0
584
Shutterstock/FGC

PEM est un conteneur format de fichier souvent utilisé pour stocker les clés cryptographiques. Il est utilisé pour de nombreuses choses différentes, car il définit simplement la structure et le type d'encodage du fichier utilisé pour stocker un peu de données.

Qu'est-ce qu'un fichier PEM ?

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

—–BEGIN <type>—–

…et se terminent par :

—–FIN <tapez>—–

Tout le reste est codé 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.

Ceci peut être utilisé pour représenter toutes sortes de données, mais il est couramment utilisé pour encoder des fichiers de clés, tels 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 pouvez voir un fichier PEM commencer par…

—–BEGIN RSA PRIVATE KEY—–

…suivi d'une longue chaîne de données, qui est la clé privée RSA réelle.

Fichiers PEM avec certificats SSL

Les fichiers PEM sont utilisés pour stocker les certificats SSL et leurs clés privées associées. Plusieurs certificats font partie de la chaîne SSL complète et fonctionnent dans cet ordre :

  • Le certificat d'utilisateur final, qui est attribué à votre nom de domaine par une autorité de certification (CA). C'est le fichier que vous utilisez dans nginx et Apache pour chiffrer HTTPS.
  • Jusqu'à quatre certificats intermédiaires facultatifs, remis aux autorités de certification plus petites par des autorités supérieures.
  • Le certificat racine, le certificat le plus élevé de la chaîne, qui est auto-signé par l'autorité de certification principale.

Publicité

En pratique, chaque certificat est répertorié dans un fichier PEM, en utilisant des blocs séparés :

—–BEGIN CERTIFICATE—– //end-user —- -END CERTIFICATE—– —–BEGIN CERTIFICATE—– //intermédiaire —–END CERTIFICATE—– —–BEGIN CERTIFICATE—– //root —–FIN CERTIFICAT—–

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

cert.pem chain.pem fullchain.pem privkey.pem

    < li>cert.pem est le certificat de l'utilisateur final.
  • chain.pem est le reste de la chaîne ; dans ce cas, il ne s'agit que du certificat racine de LetsEncrypt.
  • fullchain.pem est cert.pem et chain.pem combinés. Il s'agit du fichier transmis à nginx avec la directive ssl_certificate.
  • privkey.pem est une clé privée RSA générée avec le certificat.

Ceux-ci peuvent également utiliser le .crt extension; si vous avez auto-signé un certificat avec OpenSSL, vous obtiendrez un fichier CRT plutôt que PEM, bien que le contenu soit toujours le même et l'utilisation soit la même.

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

ssl_certificate /etc/letsencrypt/live/votredomaine /chaîne complète.pem; ssl_certificate_key /etc/letsencrypt/live/votredomaine/privkey.pem ; Publicité

Pour Apache, la configuration est en grande partie la même, mais vous devrez utiliser les directives SSLCertificateFile et SSLCertificateKeyFile :

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

Fichiers PEM avec SSH

< Les fichiers p>PEM sont également utilisés pour SSH. Si vous avez déjà exécuté ssh-keygen pour utiliser ssh sans mot de passe, votre ~/.ssh/id_rsa est un fichier PEM, sans l'extension.

Plus particulièrement, Amazon Web Services vous offre un fichier PEM contenant 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.

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

Vous devrez utiliser l'indicateur -i 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 connectera au serveur normalement, mais vous devrez spécifier ce drapeau à chaque fois.

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

ssh-add keyfile.pem

Cependant, cela ne persiste pas lors des redémarrages, vous devrez donc exécutez cette commande au démarrage ou ajoutez-la à votre trousseau macOS.

Publicité

Bien sûr, vous pouvez aussi toujours simplement ajouter votre clé publique primaire aux ~/.ssh/authorized_keys de l'instance’s après que vous vous êtes connecté une fois, mais cette méthode devrait fonctionner immédiatement pour toutes les nouvelles instances à l'avenir.

Il convient de noter que vous devez toujours verrouiller votre serveur SSH, même si vous utilisez vous-même les clés.

CONNEXION : Qu'est-ce que l'agent SSH Fo récompense et comment l'utilisez-vous ?