À partir d'un format PEM
visualiser le contenu d'un PEM
Un PEM est un fichier texte contenant 1 ou plusieurs certificats concaténés. Pour les repérer, chaque certificat commence par une ligne de la forme -----BEGIN CERTIFICATE-----
et se termine par la ligne -----END CERTIFICATE-----
. Prenez votre éditeur de texte préféré (éditeur simple comme Notepad, pas quelque chose qui formate le texte tout seul comme Word), et faites des copier-coller de chaque certificat dans autant de fichiers que vous nommerez certificateXX.crt
.
À partir d'un format CRT (PEM)
visualiser le contenu d'un CRT
openssl x509 -noout -text -in certificate.crt
convertir vers un format DER
openssl x509 -outform der -in certificate.pem -out certificate.der
convertir vers un format PKCS#7 (P7B)
openssl crl2pkcs7 -nocrl -certfile certificate.crt -out certificate.p7b [-certfile CACert.crt]
On peut mettre plusieurs certificats dans un seul conteneur PKCS#7, d’où l’argument facultatif entre crochets en fin de ligne.
convertir vers un format PKCS#12 (PFX / P12)
openssl pkcs12 -export -out certificate.pfx -name friendlyName -inkey privateKey.key -in certificate.crt [-certfile CACert.crt]
On peut rajouter le (ou les) certificat(s) de la chaîne de certification, dans le PKCS#12, d’où l’argument facultatif entre crochets en fin de ligne.
Le fichier PKCS#12 est protégé par un mot de passe, qui sera demandé interactivement lors de l’exécution de la commande ci-dessus.
À partir d'un format DER
visualiser le contenu d'un DER
openssl x509 -in certificate.der -noout -text -inform der
convertir vers un format PEM
openssl x509 -in certificate.der -out certificate.crt -inform der
À partir d'un format PKCS#7 (P7B)
visualiser le contenu d'un PKCS#7
Nota : le PKCS#7 peut être encodé au format PEM (par défaut) ou au format DER. Dans le cas d’un format DER, rajouter à toutes commandes ci-dessous l’option -inform DER
.
openssl pkcs7 -in certificate.p7b -print_certs -noout -text
convertir un PKCS#7-PEM en PKCS#7-DER
openssl crl2pkcs7 -in certificate-pem.p7b -out certificate-der.p7b -nocrl -outform der
convertir un PKCS#7-DER en PKCS#7-PEM
openssl crl2pkcs7 -in certificate-der.p7b -out certificate-pem.p7b -nocrl -inform der -outform pem
convertir vers un format PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
Dans le cas où le fichier PKCS#7 contenait plusieurs certificats, alors le fichier PEM résultant contiendra aussi tous ces certificats.
À partir d'un format PKCS#12 (PFX / P12)
visualiser le contenu d'un PKCS#12
openssl pkcs12 -in certificate.pfx -nokeys -text -info
Cette commande n’affiche que des informations parcellaires sur les certificats (uniquement leur DN). Pour avoir davantage d’informations, il faut convertir le PKCS#12 dans un autre format puis examiner le résultat à l’aide des commandes ci-dessus.
convertir vers un format PEM
openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes
Attention ! Cette commande génère un PEM qui contient tous les certificats du PKCS#12 , et avec la clef privée ! Pensez à protéger ce fichier.
Les clefs privées
visualiser le contenu d'une clef privée
openssl rsa -in certificate.key -noout -text
Cette commande permet de consulter les détails d’une clef privée. C’est intéressant pour vérifier qu’on est capables de la lire, mais les informations restituées ne seront pas parlantes sauf à un expert en cryptographie 🙂
protéger une clef privée via chiffrement
openssl rsa -in certificate-clear.key -out certificate-ciphered.key -aes256
Cette commande chiffre la clef privée au moyen de l’algorithme « AES 256 » (argument de la ligne de commande), et demande (de manière interactive) un mot de passe qui sera réutilisé pour déchiffrer la clef. Même si d’autres algorithmes sont utilisables : -aes128
, -aes192
, -des
, -des3
…, il reste préférable d’utiliser le « AES 256 ».
supprimer la protection d'une clef privée
openssl rsa -in certificate-ciphered.key -out certificate-clear.key
Cette commande permet de stocker la clef privée en clair, de manière non chiffrée.
pourquoi chiffrer une clef privée ?
Dans le cas d’une clef privée utilisée par un être humain pour des opérations manuelles (déverrouiller sa station de travail, chiffrer un mail…), il est fondamental de protéger sa clef en la chiffrant.
Dans le cas d’une clef privée utilisée par un logiciel (CFT, Apache…), l’utilité est nulle, car même si la clef privée est chiffrée, le mot de passe de déchiffrement est forcément inscrit en clair dans la configuration du logiciel qui utilise cette clef (Apache, CFT…).