Conversion de pfx en pem en utilisant openssl


109

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

Réponses:


107

Vous pouvez utiliser l'outil de 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 toute la documentation ici .


191

Une autre perspective pour le faire sous Linux ... voici comment le faire pour que le fichier unique résultant contienne la clé privée déchiffré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

Vous pouvez ensuite configurer HAProxy pour utiliser le fichier file.pem.


Ceci est une EDIT de la version précédente où j'ai eu ces multiples étapes jusqu'à ce que je réalise que l'option -nodes contourne simplement le cryptage de la clé privée. Mais je le laisse ici car cela peut simplement 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 deuxième étape vous invite pour cela et également pour créer une phrase de passe pour la clé.
  3. La troisième étape vous invite à entrer la phrase de passe que vous venez de créer pour stocker déchiffrée.
  4. Le 4ème rassemble le tout dans un seul fichier.

Vous pouvez ensuite 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é, est que si vous avez un fichier qui a à la fois la clé cryptée et décryptée, quelque chose comme HAProxy vous invite toujours à taper la phrase de passe lorsque il l'utilise.


Je n'ai pas passé 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 façon de fusionner le certificat et la clé en un seul fichier pem, exactement ce dont j'avais besoin.
ebt

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

Sous Windows, cette version d'OpenSSL est facile à utiliser pour des choses comme celle-ci: slproweb.com/products/Win32OpenSSL.html
Helge Klein

Les étapes ci-dessus ont bien fonctionné pour convertir un PFX en PEM. Je devais cependant faire une étape supplémentaire: ouvrir le fichier nokey PEM dans un éditeur de texte et déplacer le dernier certificat de la chaîne vers le haut du fichier. Sinon, nginx lancerait une erreur en se plaignant des certificats et refuserait de les utiliser.
EugeneRomero

Dans ce cas, vous pouvez réorganiser la commande cat pour la mettre en premier. comme: cat file.key file.nokey.pem> file.combo.pem Sauf si le fichier.key lui-même en a plusieurs dans le mauvais ordre. Mais dans les deux cas, vous pourriez probablement réorganiser les choses par programme.
user2415376

11

Malgré que les autres réponses soient correctes et bien expliquées, j'ai trouvé quelques difficultés à les comprendre. Voici la méthode que j'ai utilisée ( prise à partir 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 fichiers PEM de clé publique et privée séparés:

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

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

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

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

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

openssl rsa -in key.pem -out server.key
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.