Publié le 11/10/2017, rédigé 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 :

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