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 estcert.pem
etchain.pem
ensemble. C'est le fichier passé à nginx avec lessl_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é?