Question Qu'est-ce qu'un fichier PEM et en quoi est-il différent des autres formats de fichiers de clés générés par OpenSSL?


Je suis responsable de la maintenance de deux serveurs Debian. Chaque fois que je dois faire quelque chose avec des certificats de sécurité, je Google pour des tutoriels et repousser jusqu'à ce que cela fonctionne enfin.

Cependant, lors de mes recherches, je rencontre souvent différents formats de fichiers (.key, .csr, .pem) mais je n’ai jamais réussi à trouver une bonne explication de la fonction de chaque format de fichier.

Je me demandais si les gens bien ici chez ServerFault pourraient fournir des éclaircissements sur ce sujet?


1173
2018-05-19 02:24


origine


stackoverflow.com/a/45886431/1599699 - Andrew


Réponses:


SSL existe depuis assez longtemps pour que vous pensiez qu'il existe des formats de conteneur convenus. Et vous avez raison, il y en a. Trop de normes comme cela se produit. C’est donc ce que je sais et je suis sûr que d’autres y participeront.

  • .csr - Ceci est une demande de signature de certificat. Certaines applications peuvent en générer pour les soumettre aux autorités de certification. Le format actuel est PKCS10, défini dans RFC 2986. Il inclut tout ou partie des détails clés du certificat demandé, tels que le sujet, l’organisation, l’état, etc., ainsi que le Clé publique du certificat à signer. Ceux-ci sont signés par l'autorité de certification et un certificat est renvoyé. Le certificat retourné est le public certificat (qui inclut la clé publique mais pas la clé privée), qui peut elle-même prendre deux formats.
  • .pem - Défini dans les RFC 1421 à travers 1424, il s’agit d’un format de conteneur pouvant inclure uniquement le certificat public (comme avec les installations Apache et les fichiers de certificat d’autorité de certification). /etc/ssl/certs), ou peut inclure une chaîne de certificats complète comprenant une clé publique, une clé privée et des certificats racine. De manière confuse, il peut également coder un CSR (par exemple, tel qu’il est utilisé). ici) car le format PKCS10 peut être traduit en PEM. Le nom vient de Confidentialité courrier amélioré (PEM), une méthode ayant échoué pour la messagerie sécurisée, mais le format de conteneur utilisé est toujours valide. Il s'agit d'une traduction en base64 des clés x509 ASN.1.
  • .clé - Il s’agit d’un fichier au format PEM contenant uniquement la clé privée d’un certificat spécifique. Il s’agit simplement d’un nom conventionnel et non normalisé. Dans les installations Apache, cela réside souvent dans /etc/ssl/private. Les droits sur ces fichiers sont très importants et certains programmes refuseront de charger ces certificats s’ils sont mal réglés.
  • .pkcs12 .pfx .p12 - Initialement défini par RSA dans le Normes de cryptographie à clé publique (version abrégée PKCS), la variante "12" a été améliorée à l'origine par Microsoft, puis soumise comme RFC 7292. Il s'agit d'un format de conteneur avec mot de passe contenant les paires de certificats publics et privés. Contrairement aux fichiers .pem, ce conteneur est entièrement chiffré. Openssl peut transformer cela en un fichier .pem avec des clés publiques et privées: openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes 

Quelques autres formats qui apparaissent de temps en temps:

  • .der - Un moyen de coder la syntaxe ASN.1 en binaire, un fichier .pem est simplement un fichier .der codé en Base64. OpenSSL peut convertir ces fichiers en .pem (openssl x509 -inform der -in to-convert.der -out converted.pem). Windows les considère comme des fichiers de certificat. Par défaut, Windows exportera les certificats sous forme de fichiers au format .DER avec une extension différente. Comme...
  • .cert .cer .crt - Un fichier au format .pem (ou rarement .der) portant une extension différente, reconnu par l'explorateur Windows comme un certificat, contrairement à .pem.
  • .p7b .keystore - défini dans RFC 2315 en tant que numéro 7 de PKCS, il s'agit d'un format utilisé par Windows pour l'échange de certificats. Java les comprend nativement et utilise souvent .keystore comme une extension à la place. Contrairement aux certificats de style .pem, ce format a une défini moyen d'inclure des certificats de chemin de certification.
  • .crl - une liste de révocation de certificats. Les autorités de certification les utilisent comme moyen de désautoriser les certificats avant leur expiration. Vous pouvez parfois les télécharger à partir des sites Web de CA.

En résumé, il existe quatre manières différentes de présenter les certificats et leurs composants:

  • PEM - Régi par les RFC, il est utilisé préférentiellement par les logiciels open source. Il peut avoir différentes extensions (.pem, .key, .cer, .cert, etc.)
  • PKCS7 - Un standard ouvert utilisé par Java et pris en charge par Windows. Ne contient pas de matériel de clé privée.
  • PKCS12 - Norme privée de Microsoft définie ultérieurement dans un RFC offrant une sécurité renforcée par rapport au format PEM en texte brut. Cela peut contenir du matériel de clé privée. Il est utilisé préférentiellement par les systèmes Windows et peut être converti librement au format PEM via OpenSL.
  • DER - Le format parent de PEM. Il est utile de le considérer comme une version binaire du fichier PEM codé en base64. Pas couramment utilisé en dehors de Windows.

J'espère que ça aide.


1449
2018-05-19 02:49



La grande chose à propos des normes, c'est qu'il y a tellement de choix ... - squillman
.crt est une autre extension courante de .cert et .cer - David Pashley
PEM est un format de fichier qui peut consister en un certificat (ou clé publique), une clé privée ou les deux concaténés. Ne faites pas trop attention à l’extension du fichier; cela veut dire Privacy Enhanced Mail, une utilisation pour laquelle il n’a pas été très utile mais le format de fichier est resté inchangé. - Dan Carley
Réponse très utile, mais je ne pense pas que vous ayez couvert le format .pub créé par ssh-keygen. Il serait utile de savoir comment cela s’associe au reste. - Jez
Je ne peux pas m'empêcher de remarquer que "Privacy Enhanced Email" donnerait l'acronyme "PEE" par opposition à "PEM". Les RFC ont tendance à utiliser l'expression "Privacy Enhanced Mail" - aidan


PEM seul n'est pas un certificat, c'est juste un moyen de coder des données. Les certificats X.509 sont un type de données couramment codé à l'aide de PEM.

PEM est un certificat X.509 (dont la structure est définie à l'aide de ASN.1), codé à l'aide des règles de codage différenciées ASN.1, puis exécuté par le codage Base64 et bloqué entre des lignes d'ancrage en texte brut (BEGIN CERTIFICATE et END CERTIFICATE ).

Vous pouvez représenter les mêmes données à l'aide des représentations PKCS # 7 ou PKCS # 12, à l'aide de l'utilitaire de ligne de commande openssl.

Les avantages évidents de PEM sont qu'il est sûr de coller dans le corps d'un message électronique, car il contient des lignes d'ancrage et est propre 7 bits.

La RFC1422 contient plus de détails sur la norme PEM en ce qui concerne les clés et les certificats.


123
2018-06-06 15:19



Comment faites-vous cela "en utilisant la ligne de commande openssl"? - Samik R
Pour convertir un fichier DER (.crt .cer .der) en PEM: openssl x509 -inform der -in cert.cer -out cert.pem. Pour convertir un fichier PEM en DER: openssl x509 -outform der -in cert.pem -out certi.der. Pour convertir un fichier PKCS # 12 (.pfx .p12) contenant une clé privée et des certificats en PEM: openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes. Pour convertir un fichier de certificat PEM et une clé privée en PKCS # 12 (.pfx .p12): openssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crt De ici - mpeac


Parfois un .crt le fichier est déjà un .pem. Voir: https://stackoverflow.com/questions/991758/openssl-pem-key


51
2018-03-15 00:24



En effet vrai, je viens de remarquer cela aujourd'hui. Je devais entrer un certificat PEM dans rackload Loadbalancer et je me demandais si le crt généré était dans ce format. Mais cela a fonctionné comme ça, donc c'était aussi ma conclusion, la plupart de ces fichiers .crt sont au format PEM, semble-t-il. - Glenn Plas