Publié le 10/20/2017, rédigé par Gaulthier LALLEMAND

OpenSSL

Comment gérer le format d'un certificat ?

Prérequis : disposer d'un certificat x509.

Selon l'application que l'on utilise, on peut être amené à utiliser un même certificat x509 dans le format PEM (format généré/utilisé par défaut par openssl), ou dans le format DER.

Quel que soit le format d'encodage (PEM ou DER), le certificat x509 respecte la RFC 5280.

Savoir quel est le format d'encodage de mon certificat

La conversion d'un certificat PEM au format DER crée un binaire, donc difficilement lisible. Au contraire, le format PEM contient du texte en base 64, ainsi qu'un préfixe et un suffixe :

# Pour un certificat
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

Autrement dit, si le fichier contient ces deux lignes, c'est qu'il y a de grandes chances qu'il s'agisse d'un certificat x509 au format PEM. Sinon, le format DER est à considérer.

Pour information, d'autres couples préfixe/suffixe existent. Par exemple :

# Pour une CRL
-----BEGIN X509 CRL-----
-----END X509 CRL-----
# Pour une CSR
-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----
# Pour une clef privée
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----

Attention : il ne faut jamais se fier à l'extension d'un fichier (pem, csr, key, crt, cer, der, ...) pour présumer de son contenu ou de son encodage. En effet, le nom et l'extension des fichiers x509 est au choix de l'utilisateur. Seul le contenu du fichier compte.

Convertir un certificat du format PEM vers DER

Pour cela, il suffit de lancer la commande suivante :

openssl x509 -in Serveur.crt -inform pem -outform der -out Serveur.der.crt

Ici il est question de convertir le certificat Serveur.crt (-in Serveur.crt) qui est au format PEM (-inform pem) vers le format DER (-outform der) dans le fichier Serveur.der.crt (-out Serveur.der.crt).

A noter qu'il est facultatif d'indiquer le -inform pem étant donné que le format PEM est le format par défaut.

Convertir un certificat du format DER vers PEM

Il suffit d'adapter les options :

openssl x509 -in Serveur.der.crt -inform der -outform pem -out Serveur.crt

Ici aussi il est facultatif d'indiquer le -outform pem, car le format PEM est le format par défaut.