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 ?

3voto

Dave Arnold Points 11
#!/usr/bin/env python3
from optparse import Option
from OpenSSL import crypto
import os
import warnings
from getpass import getpass
warnings.filterwarnings("ignore", category=DeprecationWarning) 

def sanitize_path(path):
    return os.path.expandvars(os.path.expanduser(path))

def main(in_file, out_file, passphrase=None):
    if not passphrase:
        passphrase = getpass(prompt=("SSL Private Key Passphrase: "))

    in_file = sanitize_path(in_file)
    out_file = sanitize_path(out_file)

    with open(in_file, "rb") as input_file:
        p12 = crypto.load_pkcs12(input_file.read(), passphrase)
        pem = crypto.dump_privatekey(crypto.FILETYPE_PEM, p12.get_privatekey())
    with open(out_file, "w") as output_file:
        output_file.write(pem.decode('utf-8'))

if __name__ == '__main__':
    from optparse import OptionParser
    usage = "usage: %prog  input_file output_file [passphrase]"
    p = OptionParser(usage=usage)
    opt, args = p.parse_args()
    main(*args)

1voto

bpolat Points 269

Cela fonctionnera avec un .pem qui contient la clé privée et le certificat dans le même fichier (j'ai essayé avec le certificat Apple Push Notification)

( PushNotif.pem contient la clé privée et le certificat dans un seul fichier)

openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Saisir la phrase de passe pour PushNotif.pem :
Saisir le mot de passe d'exportation :
Vérification - Saisir le mot de passe d'exportation :

Une fois que vous avez saisi votre mot de passe, vous pouvez commencer.

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