web-dev-qa-db-fra.com

Quelles sont les différences entre .pem, .cer et .der?

Quelles sont les différences entre .pem, .cer et .der?

Pour autant que je sache, .cer contient la clé publique. Existe-t-il des cadres ouverts que je peux utiliser pour crypter mes données à l'aide de cette clé publique?

50
Jacky

.pem, .cer et .der sont toutes des extensions de fichier pour les fichiers qui peuvent contenir un certificat X.509 v3.

L'extension .der

DER est la méthode de codage des données qui composent le certificat. Le DER lui-même peut représenter tout type de données , mais il décrit généralement un certificat codé ou un conteneur CMS.

La structure d'un certificat est décrite à l'aide du langage de représentation des données ASN.1. BER et DER sont des méthodes de codage binaires pour les données décrites par l'ASN.1.

Le .pem extension

PEM est une méthode d'encodage de données binaires sous forme de chaîne (armure ASCII). Il contient un en-tête et une ligne de pied de page (spécifiant le type de données qui est codé et indiquant le début/la fin si les données sont chaînées ensemble) et les données au milieu sont les données de base 64. Dans le cas où il code un certificat, il contiendrait simplement le codage de base 64 du certificat DER. PEM signifie Privacy Enhanced Mail; le courrier ne peut pas contenir directement des valeurs binaires non codées telles que DER.

PEM peut également coder/protéger d'autres types de données liées aux certificats tels que les clés publiques/privées, les demandes de certificat, etc. Si le contenu est un certificat X509v3 commun, le PEM est codé comme suit:

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

Notez qu'un fichier PEM peut également contenir une chaîne de certificats complète, où la chaîne commence par le certificat feuille/fin du service, suivi par le certificat qui l'a signé, généralement jusqu'au certificat racine de confiance, mais non inclus. Donc, si vous manquez de certificats, vous voudrez peut-être jeter un œil derrière le premier.

Le .cer ou .crt extension

.cer signifie simplement certificat. Il s'agit normalement de données encodées DER, mais Windows peut également accepter des données encodées PEM. Vous devez jeter un œil au contenu (par exemple en utilisant l'utilitaire file sur les systèmes posix) pour voir ce qui se trouve dans le fichier pour être sûr à 100%.

Autres formats OpenSSL

Jetez un œil à cette réponse pour une liste plus complète de ce qui est supporté par OpenSSL.


Pour utiliser la clé publique contenue dans le certificat (et signée par le signature dans le certificat), vous devez utiliser n'importe quelle bibliothèque qui analyse les certificats X.509 et effectue le chiffrement RSA. Vous pouvez utiliser un outil qui détecte/gère l'encodage PEM ou vous pouvez d'abord convertir le certificat en DER en supprimant l'encodage PEM.

La ligne de commande OpenSSL contient de nombreuses options pour convertir entre PEM et DER, imprimer des informations de certificat de haut niveau ou analyser l'ASN.1 pour obtenir une vue de bas niveau de ce qui s'y trouve.

Détails

Comme la plupart des structures ASN.1, le certificat codé DER commence toujours par un octet 30 qui est le codage des balises d'un ASN.1 SEQUENCE. Si vous voyez beaucoup de répétitions dans le fichier, c'est OK; c'est juste la structure qui est strictement définie.

De même, la base 64 d'un fichier encodé PEM commence toujours par la lettre M comme un ASN.1 SEQUENCE commence par un octet 30, donc les 6 premiers bits sont 001100, qui se traduit par le nombre 12, qui est l'index de la lettre M, la treizième lettre de l'alphabet.

51
Maarten Bodewes