web-dev-qa-db-fra.com

Conversion du 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'essaye de courir:

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

mais je reçois une erreur.

unable to load private key

Comment extraire le certificat dans PEM à partir du magasin PKCS # 12 à l'aide d'OpenSSL?

179
Dean MacGregor

Essayer:

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

Après cela vous avez:

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

Pour mettre le certificat et la clé dans le même fichier, utilisez les méthodes suivantes

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'
436
kmx

Vous devez juste 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]

Vous serez alors invité à entrer un mot de passe pour chiffrer la clé privée dans votre fichier de sortie. Incluez l'option "nœuds" dans la ligne ci-dessus si vous souhaitez exporter la clé privée sans chiffrement (texte en clair):

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

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

18
Colin

Si vous pouvez utiliser Python, c'est encore plus facile si vous avez le module pyopenssl. C'est ici:

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())
14
KVISH

J'avais un fichier PFX et je devais créer un fichier KEY pour NGINX, alors j'ai fait ceci:

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

Ensuite, j'ai dû modifier le fichier KEY et supprimer tout le contenu jusqu'à -----BEGIN PRIVATE KEY-----. Après cela, NGINX a accepté le fichier KEY.

2
KTCO