Convertir PFX en PEM (et inversement)

Windows veut du PFX, nginx du PEM, Java du PKCS#12. Voici comment passer d’un format à l’autre et quels pièges OpenSSL 3 a introduits.

Les formats

Dépose le fichier PFX dans le convertisseur de certificats et saisis le mot de passe. Certificat, chaîne et clé se téléchargent alors séparément ou en bundle. Dans l’autre sens, le convertisseur prend certificat et clé en PEM et crée un PFX, en complétant automatiquement les intermédiaires manquants. Tout se passe dans le navigateur.

PFX → PEM avec OpenSSL

# tout dans un fichier (clé non chiffrée)
openssl pkcs12 -in fichier.pfx -out tout.pem -nodes

# uniquement le certificat serveur
openssl pkcs12 -in fichier.pfx -clcerts -nokeys -out server.crt

# uniquement les intermédiaires
openssl pkcs12 -in fichier.pfx -cacerts -nokeys -out chain.crt

# uniquement la clé privée
openssl pkcs12 -in fichier.pfx -nocerts -nodes -out server.key

Erreur « unsupported » avec OpenSSL 3

error:0308010C:digital envelope routines::unsupported

Les anciens fichiers PFX sont chiffrés en RC2 ou 3DES. OpenSSL 3 ne charge plus ces algorithmes qu’en mode legacy. La solution est l’option -legacy :

openssl pkcs12 -legacy -in ancien.pfx -out tout.pem -nodes

PEM → PFX avec OpenSSL

openssl pkcs12 -export -out server.pfx \
  -inkey server.key -in server.crt -certfile chain.crt

Windows prétend que le mot de passe est incorrect

OpenSSL 3 chiffre les PFX en AES-256 par défaut. Windows Server 2016 et les versions antérieures ne savent pas les ouvrir et signalent un mot de passe incorrect (« The password you entered is incorrect ») alors qu’il est juste. Les fichiers créés en 3DES fonctionnent partout :

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt -certfile chain.crt \
  -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg sha1

Le convertisseur de certificats crée d’emblée des PFX en 3DES et lit aussi bien les fichiers AES que les anciens fichiers RC2.

Quel format pour quel serveur ?

FAQ

J’ai oublié le mot de passe du PFX. Que faire ?

Un PFX ne s’ouvre pas sans mot de passe. Si le certificat est encore installé sur un serveur Windows et que la clé est exportable, réexporte-le là-bas avec un nouveau mot de passe. Sinon, seule une réémission est possible.

Pourquoi les intermédiaires manquent-ils après conversion ?

Certains PFX ne contiennent que le certificat serveur. Le convertisseur récupère automatiquement les intermédiaires manquants via l’entrée AIA du certificat.

.cer et .crt, c’est pareil ?

Ce ne sont que des extensions pour certificats. Le contenu peut être PEM (texte) ou DER (binaire). Ouvre le fichier dans un éditeur de texte : s’il commence par -----BEGIN CERTIFICATE-----, c’est du PEM.