2013-02-28 17 views
119

Ho OpenSSL x64 su Windows 7 che ho scaricato da openssl-for-windows on Google Code. Sto tentando di eseguire:Conversione del certificato PKCS # 12 in PEM utilizzando OpenSSL

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

ma ottengo un errore.

unable to load private key 

Come estrarre il certificato in PEM dall'archivio PKCS # 12 utilizzando OpenSSL?

+0

Stack Overflow è un sito per domande di programmazione e sviluppo.Questa domanda sembra essere fuori tema perché non riguarda la programmazione o lo sviluppo. Vedi [Quali argomenti posso chiedere qui] (http://stackoverflow.com/help/on-topic) nel Centro assistenza. Forse [Super User] (http://superuser.com/) o [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) sarebbe un posto migliore dove chiedere. Vedi anche [Dove pubblico le domande su Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

+0

@jww Penso che dato che questa domanda ha più di 3 anni che è un po 'tardi per segnalare il flag fuori tema. –

+0

Solo una formalità quindi la gente conosce il suo fuori tema. Le persone stanno facendo le stesse domande fuori tema e citano questa domanda. Se alla gente non viene detto il suo fuori tema, allora continueranno a chiedere su Stack Overflow. – jww

risposta

290

Prova:

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

Dopo che avete:

  • certificato newfile.crt.pem
  • chiave privata in newfile.key.pem

Per mettere il certificato e la chiave nello stesso file utilizzano il seguente

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

È possibile che la chiave privata e il certificato vengano memorizzati nello stesso * File .pem? – Ramis

+12

sì, è: 'openssl pkcs12 -in path.p12 -out newfile.pem' –

+2

che richiede l'importazione della password. Cos'è quello ? –

1

Questo funziona con un file .pem che ha la chiave privata e il certificato nello stesso file (ho provato questo con Apple certificato Push Notification)

(PushNotif.pem contiene la chiave privata e cert in un unico file)

$ openssl pkcs12 -export -in PushNotif.pem -inkey PushNotif.pem -out PushNotif.p12
Enter passphrase della PushNotif.pem:
Inserire Export password:
Verifica - Immetti password di esportazione:

Una volta inserita la password, sei a posto.

+1

Questo convertirà PEM in PKCS12 e non viceversa, che è ciò che OP ha chiesto. –

15

Hai solo bisogno di fornire una password. Si può fare all'interno della stessa riga di comando con la seguente sintassi:

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

Verrà richiesta una password per crittografare la chiave privata nel file di output. Includere l'opzione "nodi" nella riga sopra, se si desidera esportare la chiave privata non crittografata (testo in chiaro):

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

Maggiori informazioni: http://www.openssl.org/docs/apps/pkcs12.html

9

Se è possibile utilizzare Python, è ancora più facile se si avere il modulo pyopenssl. Eccolo:

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()) 
+0

C'è qualche ragione per aprire il file usando 'file' e non' open'? Voglio solo capirlo come lo userò in futuro (per semplificare la mia soluzione chiamando openssh come comando) –

+0

No, nessuna differenza. Puoi semplicemente fare 'open (" push.p12 ", 'rb'). Read()'. – KVISH

0

ho avuto un file PFX e necessari per creare il file chiave per Nginx, così ho fatto questo:

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

Poi ho dovuto modificare il file KEY e rimuovere tutti i contenuti su a -----BEGIN PRIVATE KEY-----. Dopo che NGINX ha accettato il file KEY.

Problemi correlati