318 votes

Conversion d'un certificat PKCS#12 en PEM à l'aide d'OpenSSL

J'ai OpenSSL x64 sur Windows 7 que j'ai téléchargé à partir de openssl-for-Windows sur Google Code . J'essaie de courir :

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" 

mais j'obtiens une erreur.

unable to load private key

Comment extraire le certificat en PEM de la base de données PKCS#12 à l'aide d'OpenSSL ?

787voto

kmx Points 560

Essayez :

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys
openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes

Ensuite, vous avez :

  • certificat dans nouveaufichier.crt.pem
  • clé privée dans newfile.key.pem

Pour placer le certificat et la clé dans le même fichier sans mot de passe, utilisez ce qui suit, car un mot de passe vide empêchera l'exportation de la clé :

openssl pkcs12 -in path.p12 -out newfile.pem -nodes

Ou, si vous souhaitez fournir un mot de passe pour la clé privée, n'indiquez pas -nodes et saisissez un mot de passe :

openssl pkcs12 -in path.p12 -out newfile.pem

Si vous devez saisir le mot de passe PKCS#12 directement à partir de la ligne de commande (par exemple un script), ajoutez simplement -passin pass:${PASSWORD} :

openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -passin 'pass:P@s5w0rD'

26voto

Colin Points 1

Il vous suffit de fournir un mot de passe. Vous pouvez le faire dans la même ligne de commande avec la syntaxe suivante :

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password]

Un mot de passe vous sera alors demandé pour crypter la clé privée dans votre fichier de sortie. Incluez l'option "nodes" dans la ligne ci-dessus si vous souhaitez exporter la clé privée en clair :

openssl pkcs12 -export -in "path.p12" -out "newfile.pem" -passin pass:[password] -nodes

Plus d'informations : http://www.openssl.org/docs/apps/pkcs12.html

19voto

KVISH Points 1826

Si vous pouvez utiliser Python, c'est encore plus facile si vous avez le logiciel pyopenssl module. Le voici :

from OpenSSL import crypto

# May require "" for empty password depending on version

with open("push.p12", "rb") as file:
    p12 = crypto.load_pkcs12(file.read(), "my_passphrase")

# PEM formatted private key
print crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())

# PEM formatted certificate
print crypto.dump_certificate(crypto.FILETYPE_PEM, p12.get_certificate())

12voto

Il existe un outil GUI libre et gratuit Explorateur KeyStore pour travailler avec des conteneurs de clés cryptographiques. Il permet d'exporter un certificat ou une clé privée dans des fichiers séparés ou de convertir le conteneur dans un autre format (jks, pem, p12, pkcs12, etc).

enter image description here

4voto

KTCO Points 1123

J'avais un fichier PFX et j'avais besoin de créer un fichier KEY pour NGINX, c'est ce que j'ai fait :

openssl pkcs12 -in file.pfx -out file.key -nocerts -nodes

J'ai ensuite dû modifier le fichier KEY et supprimer tout le contenu jusqu'à -----BEGIN PRIVATE KEY----- . Ensuite, NGINX a accepté le fichier KEY.

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