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:
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.
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):
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:
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:
1
|
> openssl pkcs12 -in certificate.pfx -nokey -out certificate.crt
|
E un secondo sarebbe quello di recuperare la chiave privata:
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:
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
1
|
> openssl x509 -inform der -in certificato.cer -out certificato.pem
|
Da PEM a DER
1
|
> openssl x509 -certificato outform der -in.pem -out certificate.der
|
Da PEM a PKCS#7 (.p7b, .p7c)
1
|
> openssl crl2pkcs7 -nocrl -certfile certificato.pem -out certificate.p7b -certfile CAcert.cer
|
Dal PKCS#7 al PEM
1
|
> openssl pkcs7 -print_certs -in certificato.p7b -out certificato.pem
|
Da PKCS#7 a PFX
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!