|
Publié le par Gaulthier LALLEMAND

OpenSSL

Comment convertir des fichiers P12 ou PFX ?

Les fichiers portant l'extension .p12 ou .pfx (indifférement), sont des fichiers binaires respectant la norme PKCS#12. Ils contiennent un certificat et sa clef privée, et éventuellement d'autres certificats intermédiaires. Les fichiers PFX ( .p12 ou .pfx ) se retrouvent surtout sur les systèmes Windows.

Je vous propose de découvrir la gestion de ces fichiers avec l'outil openssl sous Gnu/Linux.

Convertir des fichiers PEM en PFX

Pour créer un fichier PFX, j'ai besoin:

Puis j'utilise la commande suivante :

openssl pkcs12 -export -out Store.pfx \
               -passout pass:mdpPFX \
               -inkey Serveur.key \
               -passin pass:mdpKEY \
               -in Serveur.crt \
               -certfile CAcert.crt

Explication de la commande :

  • openssl pkcs12: la commande pour utiliser les outils liés à PKCS#12 dans openssl ;
  • -export: crée un fichier PKCS12 ;
  • -out Store.pfx: le fichier créé se nommera Store.pfx ;
  • -inkey Serveur.key: spécifie l'emplacement de la clef privée Serveur.key ;
  • -in Serveur.crt: spécifie l'emplacement du certificat Serveur.crt associé à la clef privée Serveur.key ;
  • -certfile CAcert.crt: (optionnel) spécifie l'emplacement d'un autre certificat (ici le certificat de la CA CAcert.crt) ;
  • -passin pass:mdpKEY: (optionnel) spécifie le mot de passe mdpKEY du fichier Serveur.key ;
  • -passout pass:mdpPFX: (optionnel) spécifie le mot de passe mdpPFX du nouveau fichier Store.pfx. Annule le mot de passe de la clef privée Serveur.key.

Dans le cas où je souhaiterais ajouter plus d'un certificat intermédiaire, il me faudrait créer un unique fichier contenant tous les certificats. D'abord en m'assurant que tous les certificats sont au format PEM. Ensuite en copiant les certificats dans un seul et même fichier. Par exemple sous linux :

touch autres_certificats.crt

cat cert1.crt cert2.crt cert3.crt > autres_certificats.crt

openssl pkcs12 -export -out Store.pfx \
        -passout pass:mdpPFX \
        -inkey Serveur.key \
        -passin pass:mdpKEY \
        -in Serveur.crt \
        -certfile autres_certificats.crt

Convertir un fichier PFX en fichier PEM

Si je veux récupérer un fichier contenant à la fois les certificats et la clef privée :

openssl pkcs12 -in Store.pfx -out Store.pem -nodes

Info: Sans l'option -nodes, le prompt demande de créer un mot de passe pour la clef privée.

Si je veux un fichier contenant seulement la clef privée :

openssl pkcs12 -in Store.pfx -out private_key.key -nodes -nocerts

Si je veux un fichier contenant seulement les certificats :

openssl pkcs12 -in Store.pfx -out certificats.pem -nodes -nokeys

Si je veux un fichier contenant seulement les certificats clients :

openssl pkcs12 -in Store.pfx -out certificats_clients.pem -nodes -nokeys -clcerts

Si je veux un fichier contenant seulement les certificats de ca :

openssl pkcs12 -in Store.pfx -out certificats_ca.pem -nodes -nokeys -cacerts