====== Convertir un certificat TLS de DER en PEM ======
On oublie trop souvent que c'est le contenu d'un fichier qui porte l'encodage utilisé dans ce fichier et non l'extension du nom de fichier ;)
Le cas d'utilisation est celui où l'on dispose d'un certificat encodé en [[https://en.wikipedia.org/wiki/X.690#DER_encoding|DER]] alors qu'on souhaite disposer du même certificat encodé en [[https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail|PEM]]. Pour compliquer les choses, le fichier de départ utilise l'extension ".crt" qui ne rien de l'encodage :-(
[[https://www.openssl.org/|OpenSSL]] permet d'effectuer la conversion :
$ openssl x509 -inform DER -in my_cert.crt -outform PEM -out my_cert.pem -text
* //-inform DER// est indispensable pour que openssl décode le certificat((Un message d'erreur pour indiquera qu'openssl n'arrive pas à lire le certificat si vous avez oublié cette option.))
* //-outform PEM// est optionnel dans cet exemple car //openssl// se basera sur l'extension du fichier de sortie, mais ce paramètre devient indispensable si vous souhaitez choisir une autre extension qui vous convient mieux ;-)
* //-text// est purement optionnel; si l'option est présente, on récupère toutes les informations contenues dans le certificat ; si elle est absente, le fichier de sortie ne contiendra que le certificat.
Un moyen rapide de savoir si votre certificat est encodé en DER est :
* en ligne de commande : //file my_cert.crt// renverra "data" si c'est du DER et "ASCII TEXT" si c'est du PEM
* en mode graphique, ouvrir le fichier avec un éditeur de texte et constater si le contenu est **intégralement** lisible.
== En savoir plus ==
* [[https://www.ssl.com/guide/pem-der-crt-and-cer-x-509-encodings-and-conversions/|PEM, DER, CRT, and CER: X.509 Encodings and Conversions]] (en) (ssl.com)
* [[https://knowledge.digicert.com/solution/SO26449.html|How to convert a certificate into the appropriate format]] (en) (digicert.com)