Un certificato X.509 è un documento digitale standardizzato (ITU-T X.509, RFC 5280) che lega una chiave pubblica all’identità del suo titolare mediante la firma digitale di un’autorità di certificazione (CA). È il meccanismo con cui il protocollo TLS autentica i server web, e più in generale con cui la PKI garantisce l’autenticità delle chiavi pubbliche.
Struttura del certificato
Un certificato X.509 v3 contiene i seguenti campi principali:
| Campo | Contenuto |
|---|---|
| Version | Versione dello standard (v1, v2, v3) |
| Serial Number | Identificatore univoco assegnato dalla CA |
| Issuer | Nome distinto (DN) della CA che ha emesso il certificato |
| Validity | Periodo di validità: Not Before e Not After |
| Subject | Nome distinto del titolare (es. CN=www.esempio.it, O=Azienda, C=IT) |
| Subject Public Key Info | La chiave pubblica del titolare + algoritmo |
| Extensions | Campi opzionali: uso della chiave, SAN, vincoli di base… |
| Signature | Firma della CA su tutti i campi precedenti |
La firma della CA è il cuore della fiducia: garantisce che nessun campo sia stato alterato dopo l’emissione e che la CA abbia verificato l’identità del titolare prima di firmare.
Livelli di validazione
Le CA pubbliche emettono certificati con diversi livelli di verifica dell’identità:
- DV (Domain Validation): la CA verifica solo che il richiedente controlli il dominio (via DNS o file HTTP). Automatizzabile (Let’s Encrypt). Nessuna informazione sull’organizzazione.
- OV (Organization Validation): la CA verifica anche l’esistenza legale dell’organizzazione. Il campo O= nel Subject è compilato.
- EV (Extended Validation): verifica più approfondita dell’identità aziendale. Storicamente mostrava la barra verde nel browser, oggi deprecata visivamente da Chrome e Firefox.
Estensioni critiche
Le estensioni X.509 v3 arricchiscono il certificato con vincoli e metadati:
- Subject Alternative Names (SAN): lista di domini e IP aggiuntivi coperti dal certificato (sostituisce il campo CN per i certificati multi-dominio e wildcard).
- Key Usage: restringe l’uso della chiave (firma digitale, cifratura chiave, firma certificato…).
- Extended Key Usage: specifica l’applicazione (TLS server, TLS client, firma codice, S/MIME…).
- Basic Constraints: indica se il certificato è una CA (e il massimo livello di gerarchia consentito).
- CRL Distribution Points e Authority Information Access: URL per la verifica della revoca.
Formato e codifica
I certificati X.509 sono codificati in ASN.1 (Abstract Syntax Notation One). Le codifiche più comuni sono:
- DER (Distinguished Encoding Rules): binario. Usato internamente e nei sistemi Windows.
- PEM (Privacy-Enhanced Mail): DER codificato in Base64 con intestazioni
-----BEGIN CERTIFICATE-----. Il formato testuale più diffuso.
Il comando openssl x509 -in cert.pem -text -noout mostra il contenuto leggibile di un certificato PEM.