Je suis responsable de la maintenance de deux serveurs Debian. Chaque fois que je dois faire quoi que ce soit avec des certificats de sécurité, je Google pour les tutoriels et battre jusqu'à ce que cela fonctionne enfin.
Cependant, dans mes recherches, je rencontre souvent différents formats de fichiers (.key
, .csr
, .pem
) mais je n'ai jamais pu trouver une bonne explication de l'objectif de chaque format de fichier.
Je me demandais si les bonnes personnes ici à ServerFault pourraient apporter des éclaircissements à ce sujet?
SSL existe depuis assez longtemps, on pourrait penser qu'il y aurait des formats de conteneurs convenus. Et vous avez raison, il y en a. Trop de normes que cela arrive. C'est donc ce que je sais, et je suis sûr que d'autres vont sonner.
/etc/ssl/certs
), ou peut inclure une chaîne de certificats complète, y compris la clé publique, la clé privée et les certificats racine. De manière confuse, il peut également coder un CSR (par exemple tel qu'utilisé ici ) car le format PKCS10 peut être traduit en PEM. Le nom vient de Privacy Enhanced Mail (PEM) , une méthode qui a échoué pour le courrier électronique sécurisé mais le format de conteneur sur lequel il a été utilisé, est une traduction en base64 des clés x509 ASN.1./etc/ssl/private
. Les droits sur ces fichiers sont très importants et certains programmes refuseront de charger ces certificats s'ils sont mal définis.openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes
Quelques autres formats qui apparaissent de temps en temps:
openssl x509 -inform der -in to-convert.der -out converted.pem
). Windows les considère comme des fichiers de certificats. Par défaut, Windows exportera les certificats sous forme de fichiers au format .DER avec une extension différente. Comme....keystore
comme extension à la place. Contrairement aux certificats de style .pem, ce format a une manière defined d'inclure les certificats de chemin de certification.En résumé, il existe quatre façons différentes de présenter les certificats et leurs composants:
J'espère que ça aide.
PEM seul n'est pas un certificat, c'est juste un moyen de coder les données. Les certificats X.509 sont un type de données généralement codé à l'aide de PEM.
PEM est un certificat X.509 (dont la structure est définie à l'aide d'ASN.1), codé à l'aide de l'ASN.1 DER (règles de codage distinctes), puis exécuté à travers le codage Base64 et coincé entre les 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, et l'utilitaire de ligne de commande openssl peut être utilisé pour ce faire.
Les avantages évidents de PEM sont qu'il est sûr de coller dans le corps d'un e-mail car il a des lignes d'ancrage et est propre en 7 bits.
RFC1422 contient plus de détails sur la norme PEM en ce qui concerne les clés et les certificats.
Parfois, un .crt
le fichier est déjà un .pem
. Voir: https://stackoverflow.com/questions/991758/openssl-pem-key