OpenSSL - Come convertire un certificato SSL e relativa chiave privata nei vari formati - PEM CRT CER PFX P12 etc. Come utilizzare lo strumento OpenSSL per convertire un certificato e la relativa chiave privata da PEM (estensioni .PEM, .CER o .CRT) a PKCS#12 (estensioni .PFX o .P12) e viceversa su piattaforme Windows e Linux

Certificati SSL - Standard, formati ed estensioni principali: PEM, CER, CRT, DER, P7B, PFX, P12

In questo articolo, parte integrante dei nostri approfondimenti sulla gestione dei certificati SSL su sistemi Windows e Linux, illustreremo come convertire un certificato SSL nei formati più comuni definiti su standard X.509: il formato PEM e il formato PKCS#12, noto anche come PFX. Il processo di conversione sarà compiuto mediante l'utilizzo di OpenSSL, uno strumento gratuito disponibile per piattaforme Linux e Windows.

Prima di addentrarci nei comandi console di OpenSSL consigliamo la lettura della nostra panoramica sullo standard X.509 e sui formati di file più diffusi dei Certificati SSL, e relative estensioni - CER, CRT, PEM, DER, P7B, PFX, P12 e così via.

Installare OpenSSL

La prima cosa da fare è assicurarsi che sul proprio sistema sia presente OpenSSL, uno strumento che fornisce un'implementazione open source dei protocolli SSL e TLS e che può essere utilizzato per convertire i file dei certificati nei formati basati X.509 v3 più diffusi.

OpenSSL su Linux

Se utilizzate Linux, potete installare OpenSSL con il seguente comando:

Se la vostra distribuzione è basata su apt anziché su yum, potete utilizzare il seguente comando:

OpenSSL su Windows

Se utilizzate Windows, potete installare una delle tante implementazioni open-source di OpenSSL: quella che ci sentiamo di consigliare è Win32 OpenSSL di Shining Light Production,  disponibile in versione light o full, entrambe compilate in modalità x86 (32-bit) e x64 (64-bit). Potete installare una qualsiasi di queste versioni, a patto che il vostro sistema la supporti.

IMPORTANTE: OpenSSL per Windows richiede l'installazione delle librerie Visual C++ 2008 Redistributables per poter funzionare.

Subito dopo l'installazione, è importante controllare che la cartella di installazione (C:\Program Files\OpenSSL-Win64\bin per la versione a 64-bit) sia stata aggiunta nel PATH del sistema (Pannello di Controllo > Sistema > Avanzate > Variabili d'Ambiente): in caso contrario consigliamo di aggiungerla manualmente, così da evitare di dover digitare il percorso completo dell'eseguibile ad ogni esecuzione.

Subito dopo aver installato OpenSSL sarà possibile svolgere le attività di conversione.

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

Questo è il comando da utilizzare per convertire un file di certificato PEM (estensioni .pem, .cer o .crt) e relativa chiave privata (estensione .key) in un singolo file PKCS#12 (estensioni .p12.pfx):

Se avete anche un file di certificati intermedi (es. CAcert.crt) , potete aggiungerlo al "bundle" nel seguente modo:

Conversione da PKCS#12 a PEM

Nel caso in cui abbiate l'esigenza di "estrarre" un file di certificato PEM (estensioni .pem, .cer o .crt) e/o la relativa chiave privata (estensione .key) da un singolo file PKCS#12 (estensioni .p12.pfx), dovrete utilizzare due comandi, a seconda.

Il primo, per recuperare il certificato:

Il secondo, per recuperare la chiave primaria.

IMPORTANTE: la chiave privata così ottenuta sarà in formato criptato: se volete convertirla in formato RSA unencrypted, dovete aggiungere questo terzo comando:

Inutile dire che, essendo il PKCS#12 un formato protetto da password, per poter eseguire i comandi di cui sopra sarà necessario inserire la password utilizzata al momento della creazione del file PFX o P12.

Conversione da DER (.der, cer) a PEM

Conversione da PEM a DER

Conversione di PEM in PKCS#7 (.p7b, .p7c)

Conversione di PKCS#7 in PEM

Conversione di PKCS#7 in PFX

Online SSL Converters

Qualora non possiate (o non vogliate) installare OpenSSL, potete valutare la possibilità di convertire i vostri certificati SSL utilizzando uno dei tanti strumenti disponibili gratuitamente online, tra i quali citiamo quelli offerti da due operatori del settore particolarmente noti:

Entrambi i servizi svolgono egregiamente il loro lavoro, offrendo la possibilità di convertire i certificati SSL in tutti i formati sopra descritti: al tempo stesso, prima di utilizzarli, è fondamentale effettuare una riflessione sull'opportunità o meno - in termini di sicurezza - di utilizzare un servizio di terze parti per svolgere un'operazione così delicata. Pur trattandosi di siti affidabili, effettuare l'upload del proprio certificato (e soprattutto della sua chiave privata) non è una operazione che ci sentiamo di raccomandare.

Conclusioni

Per il momento è tutto: ci auguriamo che questi comandi possano essere d'aiuto agli sviluppatori e amministratori di sistema che hanno bisogno di convertire i certificati SSL nei vari formati richiesti dai loro applicativi.

Alla prossima!

About Ryan

IT Project Manager, Web Interface Architect e Lead Developer di numerosi siti e servizi web ad alto traffico in Italia e in Europa. Dal 2010 si occupa anche della progettazione di App e giochi per dispositivi Android, iOS e Mobile Phone per conto di numerose società italiane. Microsoft MVP for Development Technologies dal 2018.

View all posts by Ryan

2 Comments on “OpenSSL - Come convertire un certificato SSL e relativa chiave privata nei vari formati - PEM CRT CER PFX P12 etc. Come utilizzare lo strumento OpenSSL per convertire un certificato e la relativa chiave privata da PEM (estensioni .PEM, .CER o .CRT) a PKCS#12 (estensioni .PFX o .P12) e viceversa su piattaforme Windows e Linux

  1. Grazie Ryan ma ti segnalo un errore nella sezione “Conversione da PKCS#12 a PEM”: hai indicato l’estensione del file privatekey.pfx che invece dovrebbe essere privatekey.key in base a come l’hai esportato nel comando precedente, quindi il comando corretto è il seguente:

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

    ciao!

Lascia un commento

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


The reCAPTCHA verification period has expired. Please reload the page.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.