OpenSSL – Come convertire certificati SSL in vari formati – PEM CRT CER PFX P12 & altro

In questo post, parte della nostra serie “come gestire certificati SSL su sistemi Windows e Linux”, mostreremo come convertire un certificato SSL nei formati più comuni definiti sugli standard X.509: il formato PEM e il formato PKCS#12, noto anche come PFX. Il processo di conversione sarà realizzato attraverso l’uso di OpenSSL, uno strumento gratuito disponibile per le piattaforme Linux e Windows.

Prima di entrare nei comandi della console di OpenSSL si consiglia di dare un’occhiata alla nostra panoramica degli standard X.509 standard e dei formati di file dei certificati SSL più popolari – CER, CRT, PEM, DER, P7B, PFX, P12 e così via.

Installare OpenSSL

La prima cosa da fare è assicurarsi che il proprio sistema abbia installato OpenSSL: questo è uno strumento che fornisce un’implementazione open source dei protocolli SSL e TLS e che può essere usato per convertire i file dei certificati nei più popolari formati basati su X.509 v3.

OpenSSL su Linux

Se stai usando Linux, puoi installare OpenSSL con il seguente comando YUM da console:

Shell

1
> yum install openssl

Se la vostra distribuzione è basata su APT invece di YUM, potete invece usare il seguente comando:

1
> apt-get install openssl

OpenSSL su Windows

Se si utilizza Windows, è possibile installare una delle tante implementazioni open-source di OpenSSL: quella che possiamo raccomandare è Win32 OpenSSL di Shining Light Production, disponibile in versione leggera o completa, entrambe compilate in modalità x86 (32-bit) e x64 (64-bit). Potete installare qualsiasi di queste versioni, purché il vostro sistema le supporti.

IMPORTANTE: OpenSSL per Windows richiede il runtime Visual C++ 2008 Redistributables per funzionare.

OpenSSL è fondamentalmente un’applicazione da console, il che significa che la useremo dalla riga di comando: dopo che il processo di installazione è stato completato, è importante controllare che la cartella di installazione (C:\Program Files\OpenSSL-Win64\bin per la versione a 64 bit) sia stata aggiunta al PATH di sistema (Pannello di controllo > Sistema> Avanzate > Variabili di ambiente): se non è il caso, si consiglia vivamente di aggiungerlo manualmente, in modo da evitare di digitare il percorso completo dell’eseguibile ogni volta che è necessario lanciare lo strumento.

Una volta installato OpenSSL, potremo usarlo per convertire i nostri certificati SSL in vari formati.

Da PEM (pem, cer, crt) a PKCS#12 (p12, pfx)

Questo è il comando da console che possiamo usare per convertire un file di certificato PEM (estensioni .pem, .cer o .crt), insieme alla sua chiave privata (.key), in un unico file PKCS#12 (estensioni .p12 e .pfx):

Shell

1
> openssl pkcs12 -export -nel certificato.crt -inkey privatekey.key -out certificate.pfx

Se avete anche un file di certificati intermedi (per esempio, CAcert.crt), è possibile aggiungerlo al “bundle” utilizzando il parametro di comando -certfile nel modo seguente:

Shell

1
> openssl pkcs12 -export -in certificato.crt -inkey privatekey.key -out certificate.pfx -certfile CAcert.cr

Da PKCS#12 a PEM

Se avete bisogno di “estrarre” un certificato PEM (.pem, .cer o .crt) e/o la sua chiave privata (.key) da un singolo file PKCS#12 (.p12 o .pfx), è necessario eseguire due comandi.

Il primo è quello di estrarre il certificato:

Shell

1
> openssl pkcs12 -in certificate.pfx -nokey -out certificate.crt

E un secondo sarebbe quello di recuperare la chiave privata:

Shell

1
> openssl pkcs12 -in certificate.pfx -out privatekey.key

IMPORTANTE: la chiave privata ottenuta con il comando precedente sarà in formato criptato: per convertirla in formato RSA, è necessario inserire un terzo comando:

Shell

1
> openssl rsa -in privatekey.key -out privatekey_rsa.key

Inutile dire che, essendo il PKCS#12 un formato protetto da password, per eseguire tutti i comandi di cui sopra vi verrà richiesta la password che è stata utilizzata per creare il file .pfx.

Da DER (.der, cer) a PEM

Shell

1
> openssl x509 -inform der -in certificato.cer -out certificato.pem

Da PEM a DER

Shell

1
> openssl x509 -certificato outform der -in.pem -out certificate.der

Da PEM a PKCS#7 (.p7b, .p7c)

Shell

1
> openssl crl2pkcs7 -nocrl -certfile certificato.pem -out certificate.p7b -certfile CAcert.cer

Dal PKCS#7 al PEM

Shell

1
> openssl pkcs7 -print_certs -in certificato.p7b -out certificato.pem

Da PKCS#7 a PFX

Shell

1
2

> openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
> openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certificatename.pfx -certfile cacert.cer

Convertitori SSL online

Se non puoi (o non vuoi) installare OpenSSL, puoi convertire i tuoi certificati SSL usando uno di questi strumenti online basati sul web:

  • SSL Certificates Converter Tool by SSLShopper.com
  • SSL Converter by NameCheap

Entrambi funzionano molto bene e possono convertire la maggior parte, se non tutti, i formati descritti sopra: allo stesso tempo, dovete pensare seriamente alle implicazioni di sicurezza che derivano dal caricare i vostri certificati SSL (e forse le loro chiavi private) su un servizio di terze parti. Per quanto affidabili e sicuri siano ad oggi questi due siti, sconsigliamo comunque tale mossa.

Conclusioni

Questo è tutto, almeno per il momento: speriamo che questi comandi siano utili a quegli sviluppatori e amministratori di sistema che hanno bisogno di convertire i certificati SSL nei vari formati richiesti dalle loro applicazioni.

Alla prossima volta!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *