Un certificato digitale è un documento elettronico che utilizza una firma digitale per vincolare una chiave pubblica a un'identità. Questo documento viene emesso da un'autorità di certificazione (CA) e serve a garantire l'autenticità, l'integrità e la non ripudiabilità delle comunicazioni e delle transazioni elettroniche.
Componenti di un certificato digitale
- Chiave pubblica: La chiave pubblica dell'entità a cui il certificato è emesso. Viene utilizzata per la crittografia delle informazioni e per la verifica delle firme digitali.
- Informazioni sull'identità: Dati che identificano il titolare del certificato, come il nome, l'organizzazione, l'unità organizzativa, il paese, e l'indirizzo e-mail.
- Informazioni sull'emittente: Dati che identificano l'autorità di certificazione che ha emesso il certificato.
- Periodo di validità: La data di inizio e di fine della validità del certificato. Dopo questa data, il certificato non è più considerato valido.
- Numero di serie: Un numero unico assegnato dall'autorità di certificazione per identificare univocamente il certificato.
- Algoritmo di firma e Firma digitale: L'algoritmo utilizzato per creare la firma digitale e la firma stessa, che è generata dalla chiave privata dell'autorità di certificazione.
Funzioni di un certificato digitale
- Autenticazione: Conferma l'identità del titolare del certificato. Ad esempio, un certificato SSL/TLS conferma l'identità di un sito web.
- Crittografia: Abilita la crittografia delle comunicazioni per proteggere la privacy e l'integrità dei dati trasmessi.
- Firma digitale: Consente di firmare digitalmente documenti e transazioni, garantendo che non siano stati alterati e che provengano dall'entità dichiarata.
Tipi di certificati digitali
- Certificati SSL/TLS: Utilizzati per garantire connessioni sicure su Internet, come nei siti web HTTPS.
- Certificati di firma del codice: Utilizzati per firmare software e garantire che il codice non sia stato alterato dopo essere stato firmato.
- Certificati di firma digitale: Utilizzati per firmare documenti elettronici, garantendo la loro integrità e autenticità.
- Certificati di e-mail (S/MIME): Utilizzati per firmare e cifrare e-mail, garantendo la sicurezza delle comunicazioni e-mail.
Figura 1: Trusted Root Certification Authorities presenti in Windows
Processo di emissione di un certificato digitale
L'emissione di un certificato digitale è un processo che coinvolge vari passaggi chiave per garantire l'identità e la sicurezza del titolare del certificato. L’intero processo può essere riassunto in queste fasi:
1. Richiesta del certificato (Certificate Signing Request - CSR)
- Generazione della coppia di chiavi: Il richiedente genera una coppia di chiavi (pubblica e privata) utilizzando un software di crittografia.
- Creazione della CSR: Il richiedente crea una CSR, un file che contiene la chiave pubblica e informazioni identificative (nome del dominio, organizzazione, paese, ecc.).
2. Invio della CSR
- La CSR viene inviata a una Autorità di Certificazione (Certification Authority - CA).
3. Verifica dell'identità
- La CA verifica le informazioni fornite nella CSR. Questo può includere la verifica del dominio, l'identità dell'organizzazione e altre informazioni necessarie.
- Verifica del dominio: Solitamente la CA invia un’e-mail a un indirizzo associato al dominio (ad es.
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. ) o richiede di aggiungere un record DNS specifico per dimostrare il controllo del dominio.
4. Emissione del certificato
- Una volta completata la verifica, la CA firma la chiave pubblica del richiedente con la propria chiave privata, creando così il certificato digitale.
- Il certificato digitale include la chiave pubblica del richiedente (la chiave privata non abbandona mai il computer su cui è stata generata inizialmente la coppia di chiavi), informazioni identificative e la firma della CA.
5. Installazione del certificato
- Il certificato digitale emesso viene inviato al richiedente.
- Il richiedente installa il certificato sul server o dispositivo che utilizzerà il certificato per stabilire connessioni sicure.
6. Configurazione e test
- Il richiedente configura il server o dispositivo per utilizzare il certificato digitale nelle comunicazioni sicure (es. HTTPS per siti web).
- Vengono eseguiti test per assicurarsi che il certificato sia installato correttamente e che le connessioni siano sicure.
7. Rinnovo e revoca
- I certificati digitali hanno una data di scadenza e devono essere rinnovati periodicamente.
- Se il certificato o la chiave privata viene compromesso, il certificato deve essere revocato e ne deve essere emesso uno nuovo.
Maggiori informazioni sono disponibili alla pagina Certificato digitale - Wikipedia
Figura 2: Come viene realizzato un certificato digitale. Fonte: Wikipedia
I certificati digitali possono essere emessi in diversi formati. Ecco i più comuni:
- DER (Distinguished Encoding Rules): Alcuni dispositivi hardware di sicurezza, come smart card e token crittografici, utilizzano il formato DER per memorizzare certificati e chiavi. In ambienti con risorse limitate, dove l'efficienza dello spazio è cruciale, il formato binario DER può essere preferito rispetto al formato base64 PEM, poiché non introduce l'overhead di codifica. Talvolta, i certificati radice e quelli delle autorità di certificazione (CA) sono distribuiti in formato DER per garantire una rappresentazione compatta e compatibile con vari sistemi operativi e software. Alcuni sistemi operativi, come Windows, possono utilizzare il formato DER per l'importazione e l'esportazione dei certificati all'interno del loro archivio certificati.
- Formato binario
- Estensione del file: .der, .cer
- Può essere utilizzato sia in ambienti Windows che Unix/Linux
- PEM (Privacy-Enhanced Mail): Il formato PEM permette di gestire certificati, chiavi private e catene di certificati in file separati, facilitando la configurazione e la manutenzione. È possibile concatenare più certificati in un singolo file PEM. Ad esempio, un certificato intermedio e un certificato radice possono essere combinati insieme.
Il formato PEM è ampiamente utilizzato grazie alla sua leggibilità, flessibilità e compatibilità con molte applicazioni e sistemi operativi, specialmente in ambienti Unix/Linux. È particolarmente adatto per la gestione di certificati SSL/TLS, chiavi private e catene di certificati, rendendolo una scelta preferita in molte implementazioni di sicurezza e comunicazioni sicure.
- Formato base64 codificato, comune nei sistemi Unix/Linux e nei server web (Apache, Nginx, ecc.).
- Estensione del file: .pem, .crt, .cer, .key
- È facile da leggere e modificare con un editor di testo, poiché è codificato in base64 e contiene delimitatori chiari (-----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----)
- PFX/PKCS#12 (Personal Information Exchange): È utilizzato principalmente per l'archiviazione e il trasferimento sicuro di certificati e chiavi private. È ampiamente utilizzato in ambienti Windows e in contesti dove è necessario trasferire in modo sicuro certificati e chiavi private. La sua capacità di contenere sia il certificato che la chiave privata, insieme alla protezione tramite password, lo rende ideale per molte applicazioni aziendali e di sicurezza.
- Formato binario che può contenere sia il certificato pubblico che la chiave privata e opzionalmente una catena di certificati.
- Usato principalmente su piattaforme Windows. Il server web di Microsoft (IIS) utilizza il formato PFX per l'importazione di certificati SSL/TLS e delle chiavi private associate.
- Estensione del file: .pfx, .p12
- Utilizzato per importare ed esportare certificati e chiavi private in modo sicuro.
- È ideale per il backup sicuro di certificati e chiavi private, poiché può essere protetto con una password.
- PKCS#7 (Cryptographic Message Syntax Standard): È utilizzato in vari contesti dove è necessario firmare e/o crittografare i dati.
- Formato usato per firmare e crittografare i messaggi e per la firma digitale.
- Contiene solo certificati o catene di certificati, ma non le chiavi private.
- È utilizzato sia in ambienti Windows che Unix/Linux. In Windows è più integrato nelle console di gestione dei certificati.
- Estensione del file: .p7b, .p7c
- Le autorità di certificazione (CA) possono utilizzare il formato PKCS#7 per distribuire certificati in un formato sicuro e standardizzato.
- È utilizzato per la crittografia e la firma digitale delle e-mail in S/MIME. Consente di garantire la riservatezza e l'integrità dei messaggi e-mail.
- PKCS#7 è compatibile con altri standard di sicurezza e può essere utilizzato insieme a PKCS#12 per la gestione e la distribuzione di certificati.
- SPC (Software Publisher Certificate): È specificamente utilizzato per la firma digitale di software e driver in ambienti Windows ed è utilizzato per garantire l'autenticità del software, assicurando agli utenti che il software proviene da una fonte affidabile e non è stato alterato.
Gli sviluppatori utilizzano certificati SPC per firmare il loro software prima di distribuirlo, in modo che gli utenti possano verificare che il software non sia stato manomesso.
- Formato utilizzato specificamente per la firma di software in ambienti Windows.
- Estensione del file: .spc
- Contiene certificati che attestano l'identità del publisher del software.
Questi formati servono diversi scopi e sono scelti in base alle esigenze specifiche di sicurezza, compatibilità e usabilità nel contesto di utilizzo. Ecco una tabella che confronta i formati di certificati digitali utilizzati in ambienti Windows e Unix/Linux:
Formato |
Utilizzo in Windows |
Utilizzo in Unix/Linux |
DER |
Sì |
Sì |
PEM |
Parzialmente |
Sì (molto comune) |
PFX/PKCS#12 |
Sì (molto comune) |
Sì |
PKCS#7 |
Sì |
Sì |
SPC |
Sì (per la firma del software) |
No (specifico per Windows) |
I formati .CER, .KEY e .PFX, comunemente usati nei certificati SSL
Questi file sono essenziali per la gestione della sicurezza e della crittografia nelle comunicazioni SSL/TLS, garantendo che le informazioni trasmesse tra client e server rimangano sicure e protette da intercettazioni.
Un file con estensione .CER, noto anche come .CRT, contiene il certificato pubblico di un'entità. Questo certificato include la chiave pubblica e informazioni identificative dell'entità, come il nome del dominio o l'organizzazione. Il formato del file può essere PEM (Base64 ASCII) o DER (binario). I certificati .CER sono utilizzati dai browser e dai server per verificare l'identità dell'entità e stabilire una connessione sicura.
Il file .KEY contiene la chiave privata associata a un certificato SSL. Questa chiave privata è fondamentale per la decrittazione dei messaggi ricevuti che sono stati crittografati con la chiave pubblica. È solitamente in formato PEM e include delimitatori come "-----BEGIN PRIVATE KEY-----" e "-----END PRIVATE KEY-----". La chiave privata deve essere mantenuta segreta e protetta per garantire la sicurezza delle comunicazioni.
Il file .PFX, conosciuto anche come .P12, è un formato binario che combina il certificato del server, i certificati intermedi e la chiave privata in un unico file. Questo formato è utile per trasferire certificati e chiavi private tra diverse piattaforme, soprattutto su sistemi Windows. I file .PFX sono spesso protetti da una password per garantire la sicurezza durante l'importazione e l'esportazione.
Questi file lavorano insieme per garantire la crittografia e la sicurezza delle comunicazioni tra client e server, proteggendo i dati trasmessi da intercettazioni e attacchi.
Figura 3: Contenuto di un file .CER in formato PEM (Base64 ASCII)
Figura 4: File .KEY che contiene la chiave privata associata a un certificato SSL
- .CER: Contiene solo il certificato pubblico. Utilizzato per stabilire connessioni sicure.
- .KEY: Contiene solo la chiave privata. Utilizzato dal server per decrittografare i dati crittografati.
- .PFX: Contiene sia certificati pubblici che chiavi private in un unico file. Utilizzato per facilitare il trasferimento di certificati e chiavi tra diverse piattaforme.
Figura 5: Formati.CER, .KEY e .PFX, comunemente usati nei certificati SSL
Conversione dei certificati tra diversi formati
È possibile convertire i diversi formati di certificati digitali tra di loro utilizzando vari strumenti, con OpenSSL che è uno dei più comuni. OpenSSL è un toolkit robusto e completo per la crittografia e la gestione dei certificati digitali. È un progetto open source che implementa i protocolli SSL (Secure Sockets Layer) e TLS (Transport Layer Security) per fornire sicurezza e privacy nelle comunicazioni su Internet.
- Funzionalità principali di OpenSSL: includono la gestione dei certificati digitali, la crittografia, l'uso dei protocolli SSL/TLS, il calcolo di hash e la firma e verifica digitale.
- Gestione dei certificati digitali: OpenSSL permette la creazione di richieste di certificati (CSR), certificati autofirmati e certificati firmati da una CA, la conversione tra vari formati di certificati digitali (PEM, DER, PKCS#12, PKCS#7) e la firma di certificati e la verifica delle firme.
- Crittografia: OpenSSL consente la cifratura e decifratura di dati utilizzando algoritmi di crittografia simmetrici e asimmetrici, e la generazione di chiavi private, pubbliche e di sessione.
- Protocolli SSL/TLS: OpenSSL permette la creazione e gestione di connessioni sicure utilizzando SSL/TLS e il debugging di connessioni SSL/TLS per risolvere problemi di sicurezza e configurazione.
- Hashing: OpenSSL supporta la generazione di hash (digest) usando vari algoritmi come MD5, SHA-1, SHA-256.
- Firma e verifica digitale: OpenSSL può firmare documenti e verificare firme digitali.
I comandi OpenSSL sono generalmente gli stessi su entrambe le piattaforme, Windows e Unix/Linux. OpenSSL è progettato per essere un toolkit portabile, quindi i comandi funzionano in modo simile indipendentemente dal sistema operativo. Ecco alcuni esempi di come si possono effettuare queste conversioni:
- Da DER a PEM openssl x509 -inform der -in certificato.der -out certificato.pem
- Da PEM a DER openssl x509 -outform der -in certificato.pem -out certificato.der
- Da PFX/PKCS#12 a PEM Questo comando estrae sia il certificato che la chiave privata: openssl pkcs12 -in certificato.pfx -out certificato.pem -nodes
- Da PEM a PFX/PKCS#12 openssl pkcs12 -export -out certificato.pfx -inkey chiaveprivata.pem -in certificato.pem -certfile catena.pem
- Da PKCS#7 a PEM Questo comando converte un file PKCS#7 contenente certificati in formato PEM: openssl pkcs7 -print_certs -in certificato.p7b -out certificato.pem
- Da PEM a PKCS#7 openssl crl2pkcs7 -nocrl -certfile certificato.pem -out certificato.p7b
- Conversioni specifiche per certificati SPC Il formato SPC è utilizzato specificamente per la firma del codice in Windows; quindi, le conversioni standard con OpenSSL potrebbero non essere applicabili. Tuttavia, gli strumenti di Windows SDK come SignTool sono utilizzati per firmare software con certificati SPC.
- Firma di software con SPC signtool sign /f mycertfile.spc /p mypassword /t http://timestampurl /v mysoftware.exe
Considerazioni sulle Conversioni
- Sicurezza: Durante la conversione, specialmente quando si estraggono chiavi private, è importante mantenere la sicurezza dei file, utilizzando password e permessi appropriati.
- Compatibilità: Non tutti i formati contengono le stesse informazioni. Ad esempio, PKCS#7 non contiene chiavi private, mentre PFX/PKCS#12 sì. Pertanto, le conversioni devono tener conto delle informazioni necessarie per l'uso previsto.
Queste conversioni permettono di utilizzare i certificati in diversi ambienti e con vari software, garantendo flessibilità e compatibilità tra sistemi operativi e applicazioni.
Convertitori di certificati SSL online
Esistono diversi siti, molti a cura di Certification Authority pubbliche, che offrono la possibilità di convertire i certificati tra i diversi formati. Ad esempio, potete dare un’occhiata a questi siti:
- GlobalTrust - Certificati SSL - S/MIME - Certificati Digitali
- Convert SSL Certificate • Trustico®
- Free SSL Certificates and SSL Tools - ZeroSSL
- SSL Converter (ssltools.eu)
- SSL Converter - Convert SSL Certificates to different formats (sslshopper.com)
- SSL Certificate Converter Online for Free (certificatetool.com)