Come esportare la catena di certificati CA da PFX in formato PEM senza attributi bag


31

Ho un file PKCS12 contenente la catena di certificati completa e la chiave privata. Ho bisogno di suddividerlo in 3 file per un'applicazione. I 3 file di cui ho bisogno sono i seguenti (in formato PEM):

  • un file chiave non crittografato
  • un file di certificato client
  • un file di certificato CA (root e tutti gli intermedi)

Questo è un compito comune che devo svolgere, quindi sto cercando un modo per farlo senza alcuna modifica manuale dell'output.

Ho provato quanto segue:

openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>

Funziona bene, tuttavia, l'output contiene attributi bag, che l'applicazione non sa come gestire.

Dopo alcune ricerche ho trovato una soluzione suggerita di passare i risultati attraverso x509 per eliminare gli attributi del sacchetto.

openssl x509 -in <clientcert.cer> -out <clientcert.cer>

Funziona, ma ho riscontrato un problema con il file cacert. Il file di output contiene solo uno dei 3 certificati nella catena.

C'è un modo per evitare di includere gli attributi bag nell'output del comando pkcs12 o un modo per fare in modo che l'output del comando x509 includa tutti i certificati? Inoltre, se eseguirlo attraverso x509 è la soluzione più semplice, c'è un modo per convogliare l'output da pkcs12 a x509 invece di scrivere due volte il file?

Risposte:


36

La soluzione alla quale finalmente sono arrivato è stata convogliarlo attraverso sed.

openssl pkcs12 -in <filename.pfx> -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <cacerts.cer>

Grazie! Questo mi ha fatto risparmiare un po 'di tempo oggi! ;-)
Jim P.

Grazie mille!
PaulJ
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.