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?
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:
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'
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
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())
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.