CertH certH
In questa pagina

Come ottenere una valutazione SSL A+ (checklist 2026)

Aggiornato il 2026-11-03 · 7 min di lettura

Un A+ non è un altro tipo di certificato, è un’altra configurazione TLS. Quasi tutti i siti bloccati ad A sono a un’impostazione di distanza: terminano correttamente TLS 1.2, ma non hanno mai attivato TLS 1.3 o non hanno mai inviato un header HSTS abbastanza lungo.

Cosa decide davvero il voto

CertH valuta cinque aree pesate a partire da un singolo handshake TLS puro: validità e catena del certificato, robustezza della chiave e algoritmo di firma, versioni di protocollo offerte, suite di cifratura negoziate e HSTS più OCSP stapling. Nessun accesso al server, nessun agente, nessun caricamento di file di configurazione: tutto è osservato dall’esterno, esattamente come lo vedrebbe un browser.

Le soglie sono semplici. Un A+ richiede un punteggio di 95 o superiore, TLS 1.3 nell’elenco dei protocolli negoziati e HSTS preloaded oppure con max-age di almeno 180 giorni. A parte da 90, B da 80, C da 70, D da 55, e sotto 55 è F. Un certificato scaduto vale automaticamente 0.

Le quattro modifiche che portano da A ad A+

In pratica il divario è quasi sempre una di queste quattro. Correggile in ordine: ognuna è verificabile in modo indipendente dall’esterno, quindi puoi rieseguire la scansione dopo ogni passo.

  • •Attivare TLS 1.3. Vale punti da solo ed è obbligatorio per A+ anche con 100 perfetto in tutto il resto.
  • •Portare HSTS ad almeno max-age=15552000 (180 giorni). Un anno (31536000) è la scelta comune.
  • •Servire una catena completa, intermedi inclusi. Un intermedio mancante appare come errore di catena in alcuni client e costa punti.
  • •Attivare OCSP stapling così il controllo di revoca viaggia con l’handshake invece di rivelare l’IP del visitatore alla CA.

Configurazione nginx che ottiene A+

Un blocco server completo per un nginx moderno (1.19+ con OpenSSL 1.1.1+). Se il tuo nginx è stato compilato contro un OpenSSL più vecchio, TLS 1.3 sarà silenziosamente indisponibile qualunque cosa tu scriva qui: verifica prima con nginx -V.

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 1.1.1.1 8.8.8.8 valid=300s;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

Configurazione Apache che ottiene A+

Apache richiede che la cache di stapling sia dichiarata una volta a livello di server, non dentro un virtual host. Tutto il resto va nel blocco <VirtualHost *:443>.

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

SSLUseStapling on
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Gli errori che tengono un sito ad A

Il più comune: attivare HSTS con includeSubDomains su un dominio che ha ancora sottodomini solo HTTP. Si rompono all’istante e la reazione abituale è rimuovere l’header, il che riporta ad A. Distribuisci HSTS per gradi: inizia con max-age di 300 secondi, osserva per una settimana, poi sali a un anno.

Il secondo errore più comune è presumere che TLS 1.3 sia attivo perché il certificato è recente. Certificati e versioni di protocollo sono indipendenti. Un certificato nuovissimo su un server che parla solo TLS 1.2 resta sotto 95.

Il terzo è un CDN davanti all’origine. Se Cloudflare, Fastly o un bilanciatore terminano il TLS, la configurazione dell’origine è irrilevante: il voto riflette l’edge, quindi l’impostazione va cambiata lì.

Verificalo tu stesso

Ogni modifica si conferma in pochi secondi da terminale. TLS 1.3 viene negoziato solo se il server lo offre davvero, HSTS compare negli header di risposta e lo stapling si vede nel blocco della risposta OCSP.

# Does the server actually negotiate TLS 1.3?
openssl s_client -connect example.com:443 -tls1_3 -servername example.com </dev/null 2>/dev/null | grep "Protocol"

# Is HSTS set, and for how long?
curl -sI https://example.com | grep -i strict-transport-security

# Is OCSP stapling actually working?
openssl s_client -connect example.com:443 -status -servername example.com </dev/null 2>/dev/null | grep -A2 "OCSP Response"

FAQ

Un A+ richiede un certificato a pagamento o a validazione estesa?

No. Un certificato a validazione di dominio (DV) può raggiungere A+: il voto misura la configurazione TLS, non il livello di validazione. Il tipo di certificato conta solo quando cambia la catena o l’algoritmo della chiave.

Perché il voto è calato dopo il rinnovo del certificato?

I rinnovi spesso portano un emittente o un tipo di chiave diverso, e alcuni server tornano a un altro set di cifrature dopo il reload. CertH registra il cambiamento nella sezione di analisi dell’evoluzione del punteggio del report di dominio, con il motivo specifico.

Serve HSTS preload per raggiungere A+?

No. Il preload è solo una delle due vie per soddisfare il requisito HSTS; un max-age di almeno 180 giorni senza preload basta. Il preload è più severo e molto più difficile da annullare, trattalo come opzionale.

Leggi dopo