- I formati .cer e .crt contengono solitamente certificati X.509 pubblici in PEM o DER, mentre .pfx e .p12 sono contenitori PKCS#12 con certificato, catena e chiave privata protetta da password.
- PEM e PKCS#7 (.p7b) utilizzano la codifica Base64 ASCII, DER e PKCS#12 sono binari; rappresentano tutti le stesse informazioni crittografiche con contenitori e utilizzi diversi.
- La chiave privata viaggia nei file .key o all'interno di .pfx/.p12, mai in .p7b; distinguere dove si trova la chiave è essenziale per installare, esportare o rinnovare i certificati.
- OpenSSL consente la conversione tra PEM, DER, PKCS#7 e PKCS#12, semplificando l'adattamento di qualsiasi certificato al formato richiesto da ciascun server o sistema.

Se sei venuto qui cercando il Differenze tra .pfx, .p12, .cer e .crtProbabilmente ti sarà già capitato di imbatterti in più di un file strano durante l'installazione di un certificato digitale o SSL su un server. Non sei il solo: tra acronimi, estensioni e formati, è facile confondersi e non sapere a cosa serve ogni file o quale sia quello più adatto a te in ogni caso.
La buona notizia è che, sebbene i nomi possano sembrare intimidatori, tutto questo può essere spiegato in modo molto semplice se comprendiamo che tutti questi file non sono altro che contenitori di certificati e chiavi in diversi formati (testo o binario) e progettati per sistemi diversi (Windows, Linux(Java, browser, ecc.). Li esamineremo uno per uno, con calma, e li metteremo in relazione tra loro in modo che tu sappia esattamente di cosa si tratta, a cosa serve e come utilizzarli o convertirli quando necessario.
Cos'è un certificato digitale e come si integrano .pfx, .p12, .cer e .crt?
Un certificato digitale non è altro che un documento elettronico firmato da un'Autorità di Certificazione (CA o, secondo il regolamento eIDAS, un Fornitore di Servizi Qualificato) che collega un'identità a una chiave pubblica. Tale identità può essere una persona, un'azienda, un server web, un dominio, ecc.
Per realizzare questa connessione si utilizza quanto segue: crittografia a chiave pubblica o asimmetricaEsiste una coppia di chiavi: una chiave pubblica (conoscibile da chiunque) e una chiave privata (di cui solo il proprietario dovrebbe essere in possesso). Ciò che è crittografato con la chiave pubblica può essere decrittografato solo con la chiave privata, e viceversa, consentendo l'autenticazione, la crittografia e la firma elettronica.
Dietro tutti questi certificati c'è un infrastruttura a chiave pubblica o PKIche include l'autorità di certificazione, le autorità di registrazione, i repository dei certificati, gli elenchi di revoca dei certificati (CRL) e, in molti ambienti, un'autorità di marcatura temporale (TSA) per registrare quando qualcosa è stato firmato.
La struttura interna della stragrande maggioranza dei certificati di uso generale segue lo standard X.509, definito dall'ITU e descritto in dettaglio in RFC 5280. Questo standard definisce campi quali versione, numero di serie, algoritmo di firma, emittente, periodo di validità, soggetto, chiave pubblica del titolare e possibili estensioni aggiuntive.
Per quanto riguarda gli algoritmi, i certificati utilizzano in genere la crittografia asimmetrica con RSA, DSA o ECDSARSA ed ECDSA servono sia per la firma che per la crittografia, mentre DSA si concentra sulla firma e sulla verifica della firma digitale.
Formati ed estensioni interne: PEM, DER, CER, CRT e compagnia
Quando parliamo di estensioni come .cer, .crt, .pem, .der, .pfx, .p12 o .p7bIn realtà stiamo mescolando due concetti: il formato di codifica del certificato (testo Base64 o binario) e la funzione del file (solo certificato, certificato + chiave privata, catena di certificati, ecc.).
A livello di formato interno, i certificati X.509 sono rappresentati con ASN.1 e sono normalmente codificati con DER (binario) o la sua variante testuale PEM (DER convertito in Base64 e racchiuso con intestazioni come INIZIO/FINE). Da lì, sono stati definiti diversi sistemi e standard contenitori specifici come PKCS#7 (.p7b) o PKCS#12 (.pfx, .p12).
La chiave per evitare confusione è ricordare che l'estensione del file è spesso solo una convenzione di denominazioneUn file .cer o un file .crt possono contenere esattamente la stessa cosa, solo che uno è più utilizzato in ambienti Windows e l'altro in ambienti Unix/Linux, per fare un esempio.
All'interno di questo gruppo generale, ci sono alcuni formati chiave È importante comprenderli chiaramente, perché sono quelli che incontrerai più spesso quando lavori con SSL/TLS o certificati personali.
Formato PEM: il “testo leggibile” dei certificati
Il formato PEM è di gran lunga il più comune per i certificati SSL/TLS su server come Apache o Nginx e nella maggior parte degli strumenti di sicurezza. Un file PEM è semplicemente un DER ricodificato in Base64 e circondato da intestazioni di testoche consente di aprirlo e copiarlo con qualsiasi editor (Blocco note, nano, vim, ecc.).
Un PEM viene riconosciuto perché il suo contenuto è delimitato da linee come —– INIZIO CERTIFICATO—– y —–END CERTIFICATO—– quando contiene un certificato, o —–INIZIO CHIAVE PRIVATA—– y —–FINE CHIAVE PRIVATA—– quando contiene una chiave privata. Tutto ciò che sta nel mezzo è una stringa Base64 che rappresenta i dati binari originali.
In un singolo file PEM puoi avere solo il certificatoÈ possibile fornire il certificato più la catena di CA intermedia, la chiave privata separatamente o persino l'intero pacchetto (chiave privata, certificato server, certificati intermedi e certificato radice). Le richieste di firma dei certificati sono fornite anche in PEM. CSRche non sono altro che strutture PKCS#10 ricodificate in testo.
Questo formato è stato originariamente definito nelle RFC 1421-1424 come parte del progetto Privacy-enhanced Electronic Mail, che non ha preso piede per la posta elettronica, ma ha lasciato un eccellente formato di testo per trasporto di dati crittografici in un formato comodo, leggibile e facile da copiare/incollare.
In pratica, i file con estensioni .pem, .crt, .cer o .key Nei sistemi Unix/Linux, si tratta solitamente di file PEM. In genere, .key contiene la chiave privata, .crt o .cer contengono il certificato del server e talvolta un file PEM aggiuntivo include la catena di CA intermedia.
Formato DER: il binario puro e semplice
DER (Distinguished Encoding Rules) è il formato di codifica binaria delle strutture ASN.1 che descrivono un certificato X.509. Non è testo, quindi se lo apri con un editor vedrai caratteri strani invece della tipica stringa Base64.
Un file DER può contenere qualsiasi tipo di certificato o chiave privataÈ tipicamente identificato dalle estensioni .der o .cer, soprattutto in ambienti Windows o su piattaforme Java. Su Windows, un file .der viene riconosciuto direttamente come file di certificato e si apre con il visualizzatore nativo facendo doppio clic.
La differenza pratica con PEM è che, mentre PEM può essere facilmente copiato e inviato via e-mail o incollato in moduli Web, DER è un blob binario chiuso Progettato per l'utilizzo diretto da parte delle applicazioni. Internamente, tuttavia, le informazioni sono le stesse: un PEM non è altro che un DER ricodificato in testo Base64.
Strumenti come OpenSSL consentono di passare da DER a PEM e viceversa con un singolo comando, senza alterare in alcun modo il contenuto logico del certificato, ma solo la sua forma di rappresentazione.
Estensioni .cer e .crt: stesso cane con un collare diverso
Le estensioni .cer e .crt vengono utilizzate per designare file contenenti certificati pubblici, solitamente in formato PEM o DER, a seconda del sistema in cui vengono generati o installati.
In alcuni casi, un file .crt su un server Apache sarà un certificato in PEM Circondato dalle intestazioni BEGIN/END CERTIFICATE e pronto per essere incollato in un blocco di configurazione. In Windows, un file .cer può essere PEM o DER, sebbene in genere rientri in una delle due categorie a seconda dello strumento che lo ha generato.
La cosa importante da capire è che l'estensione non definisce strettamente il formato interno: un file .cer può essere in formato testo PEM o binario DER, e un visualizzatore o un'utilità come OpenSSL determinerà come leggerlo. Nei browser e nei sistemi Windows, un doppio clic aprirà... visualizzatore di certificatidove puoi vedere l'emittente, l'oggetto, le date di validità, l'utilizzo della chiave, ecc.
Quando si esporta un certificato senza una chiave privata da un browser o dall'archivio certificati di Windows, normalmente si ottiene un file .cer, che viene utilizzato per convalidare le firme, catene di fiducia o crittografare le informazionima mai firmare per conto del proprietario (per questo è necessaria la chiave privata, che è separata o all'interno di un contenitore protetto).
CSR, KEY, CA e file intermedi: gli altri file che accompagnano il certificato
Quando si elabora un certificato SSL o un certificato personale, non si vedranno solo file .pfx, .p12 o .cer. L'intero processo coinvolge anche file come Certificati .csr, .key o CA (radice e intermedi), che sono ugualmente importanti affinché tutto funzioni.
La richiesta di firma o CSR (.csr) Si tratta di un file che in genere viene generato sul server su cui verrà installato il certificato SSL. Contiene la chiave pubblica, il nome di dominio, l'organizzazione, il paese e altre informazioni che l'autorità di certificazione utilizzerà per emettere il certificato. Segue lo standard PKCS#10 ed è solitamente codificato in PEM, quindi è possibile copiarlo e incollarlo nel modulo del provider.
La chiave privata o CHIAVE (.key) Questo è il file in cui è memorizzata la chiave segreta associata al certificato. Solitamente è in formato PEM, delimitato da BEGIN PRIVATE KEY e END PRIVATE KEY. Si tratta di un file estremamente sensibile che non deve essere condiviso o caricato su repository pubblici e, in molti casi, è anche protetto da password.
Il file di CA o certificato di autorità Contiene la chiave pubblica dell'entità che emette o media il certificato. Browser e OS Sono dotati di un elenco predefinito di CA attendibili, ma a volte è necessario installare certificati intermedi per completare la catena di fiducia, in modo che i client possano convalidare il certificato del server senza errori.
Questi certificati intermedi possono essere forniti come file PEM (.pem, .crt, .cer) o all'interno di un contenitore come .p7bNelle configurazioni di hosting, è molto comune che vengano richiesti i file CRT (certificato di dominio), KEY (chiave privata) e CA o certificato intermedio per installare correttamente SSL.
PKCS#7 / P7B: catena di certificati senza chiave privata
PKCS#7, solitamente rappresentato con estensioni .p7b o .p7cÈ un formato progettato per raggruppare uno o più certificati in un contenitore strutturato, senza includere la chiave privata. È comunemente utilizzato per distribuire catene di certificati (certificato server più quelli intermedi) in ambienti Windows o Java (Tomcat, keystore, ecc.).
Un file .p7b è tipicamente codificato in Base64 ASCII, simile a un file PEM, ed è stato originariamente definito nella RFC 2315 come parte degli standard di crittografia a chiave pubblica. Oggi, il suo successore è CMS (Cryptographic Message Syntax), ma il nome PKCS#7 è ancora ampiamente utilizzato nel mondo dei certificati SSL.
Questo formato è molto utile quando hai bisogno installare l'intera catena di fiducia Su un server o in un sistema che gestisce i certificati tramite un archivio (ad esempio, il keystore Java). In genere, un provider SSL fornisce il certificato del server da una parte e un file .p7b con l'intera catena di CA dall'altra, oppure un singolo file .p7b contenente tutto.
Se si desidera convertire un file .p7b in PEM, strumenti come OpenSSL consentono di estrarre i certificati con un singolo comando e salvarli in uno o più file di testo. È quindi possibile separare i blocchi BEGIN/END CERTIFICATE se è necessario caricarli separatamente sul server.
È importante notare che un file PKCS#7 Non contiene mai la chiave privataPertanto, di per sé non è utile per la firma o la decrittografia: fornisce solo la parte pubblica della catena di certificati per convalidare l'affidabilità.
PKCS#12: Cosa sono esattamente .pfx e .p12?
Lo standard PKCS#12 definisce un contenitore binario protetto da password che può includere certificati pubblici, catene CA complete e chiave privata associati. Le estensioni più comuni per questo formato sono .pfx e .p12, che sono praticamente equivalenti.
Storicamente, PKCS#12 è nato come un formato strettamente legato a Microsoft, ma con il tempo È stato standardizzato in RFC 7292 ed è utilizzato oggi in tutti i tipi di sistemi, proprio perché consente trasportare in modo sicuro la coppia certificato + chiave privata da una squadra all'altra.
Nel mondo Windows, quando si esporta un certificato "chiave privata" dall'archivio certificati dell'utente o del computer, la procedura guidata genera un file .pfx (o .p12) che include tutto il necessario per importarlo in un altro sistema: chiave privata, titolare del certificato e solitamente la catena intermedia.
Durante la creazione o l'esportazione di un file PKCS#12, il sistema ti chiederà di specificare un protezione con passwordQuesta password sarà necessaria in seguito per importare il file in un altro browser, IIS, un client di posta elettronica o persino un altro sistema operativo. In questo modo, se qualcuno ruba il file .pfx, non potrà utilizzarlo senza conoscere quella password.
Strumenti come OpenSSL consentono di convertire un file .pfx o .p12 in PEM, in modo da ottenere un file di testo in cui è possibile individuare facilmente il blocco della chiave privata, il certificato del server e i certificati intermedi e copiarli dove appropriato (ad esempio, in un pannello di hosting che accetta solo CRT, KEY e CA separatamente).
Rinnovo, esportazione e importazione di certificati .pfx e .p12
Nel settore dei certificati personali (ad esempio quelli rilasciati dalla FNMT o da altre autorità a fini identificativi), la modalità di supporto e di rinnovo è strettamente legata all’utilizzo di file .pfx o .p12, che viaggiano su carte crittografiche, token USB o direttamente come file protetti sul computer.
Se il tuo certificato personale non è ancora scaduto, molte autorità lo consentono Rinnovalo online: il rinnovo viene abilitato dal punto di registrazione (associazione professionale, azienda, fornitore di servizi di certificazione, ecc.) e si riceve un link via e-mail per completare la procedura dal proprio computer.
Tuttavia, se il certificato è già scaduto, normalmente dovrai partecipare di persona Recati allo stesso punto di registrazione con la tua carta crittografica o il dispositivo in cui è conservato il certificato scaduto, identificati e richiedi una nuova emissione, che potrai esportare nuovamente in formato .pfx o .p12 per importarla ovunque ti serva.
Nei browser come Edge o ChromeIl processo di importazione avviene attraverso Archivio certificati di WindowsDalle impostazioni di privacy e sicurezza, è possibile aprire il gestore dei certificati, selezionare la scheda Personale e importare un file .pfx o .p12. La procedura guidata richiederà la password del contenitore e offrirà la possibilità di contrassegnare la chiave come esportabile per backup futuri.
Se invece di un file .pfx hai un file .cer senza chiave privata (icona del certificato senza chiave), quel file è utile solo per installare il certificato pubblico (appare sotto "Altre persone"), ma non per la firma o l'autenticazione. In tal caso, non sarà possibile recuperare la chiave privata da lì e, se non si dispone di un'altra copia valida, l'unica opzione sarà richiedere un nuovo certificato.
Come vengono utilizzati questi formati nei certificati SSL del server
Nel lavoro quotidiano con i server web, VPNChe si utilizzino proxy o applicazioni Java, i diversi formati di certificato utilizzati dipendono dal sistema e dal tipo di installazione. Configurare Apache su Linux non è la stessa cosa che configurare IIS su Windows o Tomcat su Java.
Negli ambienti Unix/Linux (Apache, Nginx, HAProxy, ecc.) è normale lavorare con file PEM File separati: uno per la chiave privata (.key), un altro per il certificato del server (.crt o .cer) e, a volte, un altro ancora con la stringa CA intermedia. Tutti questi file sono referenziati nella configurazione del server per stabilire il protocollo TLS.
Sulle piattaforme Windows (IIS, servizi desktop remoto, ecc.) è molto comune che venga richiesto un .pfx o .p12 contenente sia il certificato che la chiave privata e la catena. La procedura guidata di importazione si occupa di posizionare ogni elemento nel suo archivio corrispondente, così non devi preoccuparti dei dettagli interni.
Negli ambienti Java (Tomcat, applicazioni con il proprio keystore) archivi del tipo JKS o PKCS#12In molti casi, un file .pfx viene importato direttamente oppure vengono utilizzati certificati .p7b per configurare la catena di fiducia all'interno di un archivio chiavi, a seconda dello strumento e della versione di Java.
Quando si acquista un certificato SSL da un fornitore terzo, si possono ricevere diverse combinazioni di file: un file CRT + CA in formato PEM, un file .p7b contenente la stringa o persino un file .pfx pre-compilato. La chiave è identificare il tipo di file corretto. Dov'è la chiave privata? (se è fornito con te e non è generato dal server) e quale file contiene il certificato del server e la catena intermedia.
Nei pannelli di controllo di hosting, in genere ti verrà chiesto di compilare i campi per CRT, KEY e, facoltativamente, per la CA o il certificato intermedio. Se hai solo un file .pfx, puoi convertirlo in PEM utilizzando OpenSSL ed estrarre ogni blocco da lì, copiando attentamente da BEGIN a END di ogni tipo.
Conversione tra formati di certificato con OpenSSL
Una volta capito cosa è ogni file, il passo logico successivo è sapere come convertirli Quando il server o l'applicazione richiede un formato diverso da quello fornito dal tuo ISP o CA, lo strumento standard è OpenSSL, disponibile nella maggior parte delle distribuzioni Linux e installabile anche su Windows.
Ad esempio, se hai un certificato in DER (.der, .cer) E se è necessario convertirlo in PEM, un singolo comando che prende quel binario e lo ricodifica in Base64 con le intestazioni appropriate sarebbe sufficiente. Allo stesso modo, è possibile trasformare un PEM in DER se il sistema accetta solo binari.
Con un file PKCS#7 (.p7b), puoi usare OpenSSL per estrarre i certificati in formato PEM con un semplice comando che stampa i certificati contenuti e li salva in un file di testo. Da lì, è possibile separare i diversi blocchi BEGIN/END CERTIFICATE se si necessita di file individuali.
Nel caso di PKCS#12 (.pfx, .p12), OpenSSL consente di convertire il contenitore in un file PEM contenente la chiave privata e tutti i certificati. Durante il processo, verrà richiesta la password del contenitore e sarà possibile scegliere se lasciare la chiave privata crittografata o in testo normale all'interno del file PEM, a seconda dell'uso previsto.
Questi tipi di conversioni rendono possibili scenari come il caricamento di un file .pfx su un server Linux, la sua conversione in PEM e quindi CRT e KEY separati per compilare un modulo di installazione SSL che non supporta direttamente i contenitori PKCS#12.
Oltre alle conversioni dirette DER↔PEM, PEM↔PKCS#7, PKCS#7↔PKCS#12 e PKCS#12↔PEM, la stessa utility può generare CSR, gestire chiavi, ispezionare certificati e controllare le date di scadenza, il che la rende uno strumento di base in qualsiasi ambiente che lavora con i certificati.
Tipi di certificati digitali e ambiti di utilizzo
Oltre al formato del file, è anche utile essere chiari sul tipi di certificati a seconda del loro utilizzo o del tipo di entità che rappresentano, poiché ciò influenza il modo in cui vengono gestiti i loro backup, rinnovi e installazioni.
A livello normativo europeo (Regolamento eIDAS) si distingue tra Certificati elettronici "semplici" e certificati qualificatiI primi soddisfano i requisiti di base in materia di identificazione e rilascio, mentre i secondi richiedono al fornitore processi di verifica dell'identità più rigorosi e condizioni tecniche e organizzative più rigorose. Un chiaro esempio in Spagna sarebbe la carta d'identità elettronica (DNIe).
Se guardiamo chi è il titolare, possiamo avere certificati di persona fisica, persona giuridica o ente senza personalità giuridicaOgnuno di essi viene utilizzato per firmare o autenticare in ambiti diversi: rispettivamente procedure personali, rapporti per conto di un'azienda o obblighi fiscali.
Nel mondo dei server web, la famiglia di certificati più nota è quella di Certificati SSL/TLSQuesti certificati vengono installati sui server per crittografare il canale di comunicazione con gli utenti. Includono varianti come certificati a dominio singolo, con caratteri jolly e multidominio (SAN), che differiscono per il numero di nomi che coprono e il livello di convalida.
Indipendentemente dal tipo, tutti questi certificati possono finire per essere archiviati e distribuiti negli stessi formati: file .cer, .crt, .pem, .p7b o contenitori .pfx/.p12, a seconda del sistema in cui verranno utilizzati e del metodo scelto per trasportarli o eseguirne il backup.
L'utilità dei certificati digitali è enorme: Garantiscono riservatezza e autenticità delle comunicazioni, consentono firme elettroniche legalmente valide, semplificano le procedure amministrative e commerciali e consentono a più servizi di rete di funzionare in modo sicuro senza che l'utente debba preoccuparsi dei dettagli crittografici.
A questo punto, è chiaro che estensioni come .pfx, .p12, .cer o .crt sono semplicemente modi diversi di impacchettare la stessa cosa: un certificato X.509, una chiave privata e, ove applicabile, una catena di fiducia, che, a seconda dell'ambiente, sono rappresentati come testo Base64, binario DER o contenitori PKCS per facilitare l'installazione e la distribuzione. trasporto tra sistemi.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.
