File PEM

Introduzione
Quando lavori con la crittografia, i certificati e le chiavi, incontrerai frequentemente il formato file PEM. PEM sta per Privacy Enhanced Mail, e offre un metodo ampiamente adottato per memorizzare e condividere chiavi crittografiche, certificati e altri dati sensibili. Questo articolo spiega i file PEM: cosa sono, come funzionano e come contribuiscono a una comunicazione sicura.
Che cos’è un file PEM?
I file PEM sono file basati su testo che seguono un formato specifico per memorizzare informazioni crittografiche. Questi file includono dati codificati in base64 racchiusi da intestazioni e piè di pagina leggibili. Questi marcatori chiariscono il tipo di contenuto, come chiavi private, chiavi pubbliche, certificati o richieste di certificato.
Ecco un esempio di una chiave privata RSA in formato PEM:
-----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAqhAx9UqRW/rP/3uw5UDHENVOzlq2ljPbe0TqA8+KKS7dABYJ ... K5xGP+LPgzCc7Dkp2+jE8SJOuTrFLRWhlkBvZKRwfQ== -----END RSA PRIVATE KEY-----
Questi dati appaiono tra i marcatori -----BEGIN RSA PRIVATE KEY----- e -----END RSA PRIVATE KEY-----, che definiscono chiaramente il tipo di contenuto.
Il formato PEM
I file PEM mirano sia alla leggibilità umana sia a una trasmissione senza impedimenti. La codifica base64 permette ai dati binari di transitare attraverso sistemi progettati per il testo semplice. Di conseguenza, puoi utilizzare i file PEM con email o script di configurazione senza complicazioni.

Puoi memorizzare vari tipi di dati crittografici nei file PEM, tra cui:
- Chiavi private (RSA, DSA, EC)
- Chiavi pubbliche
- Certificati (X.509)
- Richieste di firma certificato (CSR)
- Liste di revoca dei certificati (CRL)
Ogni sezione utilizza marcatori di intestazione e piè di pagina unici. Ad esempio:
- Chiave privata:
-----BEGIN PRIVATE KEY----- - Chiave pubblica:
-----BEGIN PUBLIC KEY----- - Certificato:
-----BEGIN CERTIFICATE-----
Certificati PEM
Uno degli usi più comuni di questi file è la memorizzazione di certificati X.509. Questi documenti digitali collegano chiavi pubbliche con identità verificate, come nomi di dominio o organizzazioni. Le Autorità di Certificazione (CA) rilasciano questi certificati per supportare la crittografia SSL/TLS.
Ecco un esempio di certificato in formato PEM:
-----BEGIN CERTIFICATE----- MIIFSzCCBDOgAwIBAgIQV5Kwra1VwjZdYbSqBlp1DDANBgkqhkiG9w0BAQsFADBG ... Rti0xS/YCrQMsDJD2A8FnhyofiZdkZovFDG4NmSWxRU4AXrWTg== -----END CERTIFICATE-----
Ogni certificato contiene dettagli sull’emittente, chiavi pubbliche, periodi di validità e altri metadati. Durante un handshake SSL/TLS, un server presenta questo certificato per dimostrare la propria autenticità, consentendo al client di procedere con una comunicazione crittografata.
Lavorare con i file PEM
Spesso caricherai, analizzerai o manipolerai i file PEM quando configuri sistemi crittografati. Fortunatamente, la maggior parte dei linguaggi di programmazione offre librerie per semplificare questo processo. Ad esempio, in Python puoi utilizzare la libreria cryptography:
from cryptography import x509
from cryptography.hazmat.backends import default_backend
with open("certificate.pem", "rb") as cert_file:
cert_data = cert_file.read()
cert = x509.load_pem_x509_certificate(cert_data, default_backend())
print(cert.subject)
Questo frammento carica il certificato e stampa i dettagli del soggetto. In altri ecosistemi, strumenti come OpenSSL, java.security di Java o il modulo crypto di Node.js offrono funzionalità simili.
File PEM nell’infrastruttura Cloud moderna
I file PEM sono essenziali per l’automazione sicura e le implementazioni cloud-native. Gli scenari d’uso comuni includono:
- Accesso SSH: Memorizzare chiavi private per la connessione a server cloud come AWS EC2
- Kubernetes: Utilizzare segreti in formato PEM per proteggere pod e ingress
- Let’s Encrypt: Automatizzare i certificati TLS con output in formato PEM
- Infrastructure as Code: Le chiavi PEM si integrano in Terraform, Ansible e script CI/CD
Man mano che l’infrastruttura diventa più dinamica, gestire in sicurezza i file PEM diventa fondamentale per mantenere una comunicazione affidabile su larga scala.
Conversione dei file PEM in altri formati
Sebbene il formato PEM sia ampiamente supportato, alcuni strumenti e piattaforme possono richiedere formati di certificato differenti, quali DER, PFX (PKCS#12) o JKS (Java KeyStore). Fortunatamente, puoi convertire facilmente i file PEM utilizzando OpenSSL.
Ecco alcune conversioni comuni:
- PEM a DER: Utilizzato da alcuni sistemi Windows e basati su Java
openssl x509 -outform der -in certificate.pem -out certificate.der
- PEM a PFX (.p12): Utile per l’importazione in Windows o IIS
openssl pkcs12 -export -out certificate.pfx -inkey privatekey.pem -in certificate.pem
- PEM a JKS (tramite intermedio .p12): Necessario per applicazioni Java
# Converti PEM a PKCS12 openssl pkcs12 -export -out keystore.p12 -inkey key.pem -in cert.pem # Importa il file .p12 in Java KeyStore keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 \ -destkeystore keystore.jks -deststoretype JKS
Prima di procedere con la conversione, verifica sempre i requisiti del sistema di destinazione. Un formato improprio o una catena di certificati incompleta possono portare a problemi di autenticazione o a connessioni fallite.
Migliori pratiche per la sicurezza dei file PEM
- Crittografa le chiavi private a riposo utilizzando key vault o HSM
- Imposta permessi stringenti sui file (
chmod 600per le chiavi private) - Ruota certificati e chiavi a intervalli regolari
- Verifica sempre la catena dei certificati prima di affidarti a un file
- Utilizza protocolli di trasferimento sicuri (come SFTP o TLS) quando trasporti i file
Conclusione
Comprendere i file PEM è fondamentale per le comunicazioni sicure e per i flussi di lavoro legati alla crittografia. Questi file memorizzano materiali crittografici sensibili in un formato leggibile e portatile. Per questo motivo, rimangono essenziali per sistemi basati su SSL, TLS e PKI.
Per mantenere alta la sicurezza, ruota regolarmente i tuoi certificati, verifica le fonti e proteggi con cura le chiavi private. Padroneggiare i file PEM ti fornisce la base necessaria per utilizzare strumenti di sicurezza moderni, automatizzare implementazioni sicure e mantenere sistemi affidabili.
Successivo
