Conversione di pfx in pem utilizzando openssl


109

Come generare un .pem certificato CA e un certificato client da un file PFX utilizzando OpenSSL.

Risposte:


107

È possibile utilizzare lo strumento della riga di comando di OpenSSL. I seguenti comandi dovrebbero fare il trucco

openssl pkcs12 -in client_ssl.pfx -out client_ssl.pem -clcerts

openssl pkcs12 -in client_ssl.pfx -out root.pem -cacerts

Se vuoi che il tuo file sia protetto da password ecc., Allora ci sono opzioni aggiuntive.

Puoi leggere l'intera documentazione qui .


191

Un'altra prospettiva per farlo su Linux ... ecco come farlo in modo che il singolo file risultante contenga la chiave privata decrittografata in modo che qualcosa come HAProxy possa usarlo senza richiedere la passphrase.

openssl pkcs12 -in file.pfx -out file.pem -nodes

Quindi puoi configurare HAProxy per utilizzare il file file.pem.


Questa è una MODIFICA dalla versione precedente in cui ho eseguito questi passaggi multipli fino a quando non ho realizzato che l'opzione -nodes ignora semplicemente la crittografia della chiave privata. Ma lo lascio qui perché potrebbe solo aiutare con l'insegnamento.

openssl pkcs12 -in file.pfx -out file.nokey.pem -nokeys
openssl pkcs12 -in file.pfx -out file.withkey.pem
openssl rsa -in file.withkey.pem -out file.key
cat file.nokey.pem file.key > file.combo.pem
  1. Il primo passaggio richiede la password per aprire il PFX.
  2. Il secondo passaggio richiede che oltre a creare una passphrase per la chiave.
  3. Il terzo passaggio richiede di inserire la passphrase appena creata per archiviare decrittografata.
  4. Il 4 ° mette tutto insieme in 1 file.

Quindi puoi configurare HAProxy per utilizzare il file file.combo.pem.

Il motivo per cui hai bisogno di 2 passaggi separati in cui indichi un file con la chiave e un altro senza la chiave, è perché se hai un file che ha sia la chiave crittografata che quella decrittografata, qualcosa come HAProxy ti chiede comunque di digitare la passphrase quando lo usa.


Non ho passato il tempo a familiarizzare con openssl, ma la conversione pem non includeva la chiave privata. La modifica ha fornito i dettagli su come unire il certificato e la chiave in un unico file pem, proprio quello di cui avevo bisogno.
ebt

Sui sistemi Windows, usa il tipo invece di cat
hupseb il

Su Windows questa versione di OpenSSL è facile da usare per cose come questa: slproweb.com/products/Win32OpenSSL.html
Helge Klein

I passaggi precedenti hanno funzionato bene per convertire un PFX in PEM. Tuttavia, ho dovuto fare un ulteriore passaggio: aprire il file PEM nokey in un editor di testo e spostare l'ultimo certificato della catena all'inizio del file. Altrimenti nginx genererebbe un errore lamentandosi dei certificati e rifiuterebbe di usarli.
EugeneRomero

In tal caso potresti riordinare il comando cat per metterlo per primo. come: cat file.key file.nokey.pem> file.combo.pem A meno che il file.key stesso non abbia più file nell'ordine sbagliato. In entrambi i casi, potresti probabilmente riorganizzare le cose in modo programmatico.
user2415376

11

Nonostante le altre risposte siano corrette e spiegate in modo esauriente, ho trovato alcune difficoltà a comprenderle. Ecco il metodo che ho usato ( preso da qui ):

Primo caso: per convertire un file PFX in un file PEM che contiene sia il certificato che la chiave privata:

openssl pkcs12 -in filename.pfx -out cert.pem -nodes

Secondo caso: per convertire un file PFX in file PEM con chiave pubblica e privata separati:

Estrae la chiave privata da un PFX in un file PEM:

openssl pkcs12 -in filename.pfx -nocerts -out key.pem

Esporta il certificato (include solo la chiave pubblica):

openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem

Rimuove la password (parafrasi) dalla chiave privata estratta (opzionale):

openssl rsa -in key.pem -out server.key
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.