182 votes

Converting pfx to pem using openssl

Comment générer un .pem certificat CA et certificat client à partir d'un fichier PFX en utilisant OpenSSL.

264voto

user2415376 Points 1964

Une autre perspective pour le faire sur Linux... voici comment le faire afin que le fichier unique résultant contienne la clé privée décryptée afin que quelque chose comme HAProxy puisse l'utiliser sans vous demander de mot de passe.

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

Ensuite, vous pouvez configurer HAProxy pour utiliser le fichier file.pem.


Il s'agit d'une ÉDITION de la version précédente où j'avais ces étapes multiples jusqu'à ce que je réalise que l'option -nodes contourne simplement le chiffrement de la clé privée. Mais je le laisse ici car cela peut aider à l'enseignement.

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. La 1ère étape vous demande le mot de passe pour ouvrir le PFX.
  2. La 2ème étape vous demande cela plus aussi de créer un mot de passe pour la clé.
  3. La 3ème étape vous demande d'entrer le mot de passe que vous venez de créer pour le stocker en décrypté.
  4. La 4ème regroupe tout en un seul fichier.

Ensuite, vous pouvez configurer HAProxy pour utiliser le fichier file.combo.pem.

La raison pour laquelle vous avez besoin de 2 étapes distinctes où vous indiquez un fichier avec la clé et un autre sans la clé, c'est parce que si vous avez un fichier qui contient à la fois la clé chiffrée et décryptée, quelque chose comme HAProxy vous demande toujours de taper le mot de passe quand il l'utilise.

1 votes

Je n'ai pas pris le temps de me familiariser intimement avec openssl, mais la conversion pem n'incluait pas la clé privée. La modification a fourni les détails sur la manière de fusionner le certificat et la clé dans un fichier pem, exactement ce dont j'avais besoin.

3 votes

Sur les systèmes Windows, utilisez type au lieu de cat

2 votes

Sur Windows, cette version d'OpenSSL est facile à utiliser pour des choses comme ceci : slproweb.com/products/Win32OpenSSL.html

142voto

Jay Points 8393

Vous pouvez utiliser l'outil en ligne de commande OpenSSL. Les commandes suivantes devraient faire l'affaire

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Si vous voulez que votre fichier soit protégé par mot de passe, etc., il existe des options supplémentaires.

Vous pouvez lire l'ensemble de la documentation ici.

1 votes

Cela a fonctionné seulement sur Windows lorsque j'ai utilisé le fichier OpenSSL .exe dans "C:\Program Files\Git\usr\bin\openssl.exe". Lorsque j'ai utilisé openssl depuis la console git, j'ai obtenu des erreurs de openssl pfx to pem erreur: 0D0680A8: routines de codage asn1: asn1_check_tlen: incorrect

79voto

Mohammed Noureldin Points 3029

Malgré que les autres réponses soient correctes et bien expliquées, j'ai eu quelques difficultés à les comprendre. Voici la méthode que j'ai utilisée (prise d'ici):

Premier cas : Pour convertir un fichier PFX en un fichier PEM contenant à la fois le certificat et la clé privée :

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

Deuxième cas : Pour convertir un fichier PFX en des fichiers PEM distincts pour la clé publique et privée :

Extrait la clé privée d'un fichier PFX vers un fichier PEM :

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Exporte le certificat (inclut uniquement la clé publique) :

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Supprime le mot de passe (paraphrase) de la clé privée extraite (optionnel) :

openssl rsa -in key.pem -out server.key

2 votes

Dans le premier cas, on me demande un mot de passe, même si les certificats originaux n'en avaient pas.

8 votes

@openCivilisation Vous pouvez désactiver le réglage d'une phrase secrète PEM pour la key.pem en ajoutant -nodes après le pkcs12

7voto

Attiq Ur Rehman Points 11

Vous pouvez extraire ca-bundle, .crt et .key de .pfx en utilisant ceci.

# Extraction des certificats ca..."
  openssl pkcs12 -in ${filename}.pfx -nodes -nokeys -cacerts -out ${filename}-ca.crt

# Extraction du fichier de clé..."
  openssl pkcs12 -in ${filename}.pfx -nocerts -out ${filename}.key

# Extraction du certificat..."
  openssl pkcs12 -in ${filename}.pfx -clcerts -nokeys -out ${filename}.crt

# combiner les certificats ca et les fichiers crt
  cat  ${filename}.crt ${filename}-ca.crt > ${filename}-full.crt

# Suppression de la passphrase du fichier de clé"
  openssl rsa -in ${filename}.key -out ${filename}.key

Link: https://gist.github.com/mediaupstream/a2694859b1afa59f26be5e8f6fd4806a

2voto

ben Points 31

Pour un PFX verrouillé avec un mot de passe

Il est recommandé de combiner l'argument du mot de passe, dans une seule commande, avec la conversion, pour éviter les erreurs.

comme ceci : Cette commande est pour extraire la clé privée

openssl pkcs12 -in "blablabla.pfx" -out key.key -nodes -passin pass:blablabla   

et cette commande pour extraire la clé publique

openssl pkcs12 -in "blablabla.pfx" -clcerts -nokeys -out crt.crtpem -nodes -passin pass:blablabla

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X