Comment obtenir une note SSL A+ (checklist 2026)
Mis à jour le 2026-11-03 · 7 min de lecture
Un A+ n’est pas un autre type de certificat, c’est une autre configuration TLS. La plupart des sites bloqués à A n’ont qu’un réglage d’écart : ils terminent correctement TLS 1.2, mais n’ont jamais activé TLS 1.3 ou n’ont jamais envoyé d’en-tête HSTS assez long.
Ce qui détermine réellement la note
CertH note cinq domaines pondérés à partir d’une simple poignée de main TLS : validité et chaîne du certificat, force de la clé et algorithme de signature, versions de protocole proposées, suites de chiffrement négociées, et HSTS plus OCSP stapling. Aucun accès au serveur, aucun agent, aucun envoi de fichier de configuration — tout est observé de l’extérieur, exactement comme le verrait un navigateur.
Les seuils sont simples. Un A+ exige un score d’au moins 95, TLS 1.3 dans la liste des protocoles négociés, et un HSTS soit préchargé, soit avec un max-age d’au moins 180 jours. A commence à 90, B à 80, C à 70, D à 55, et tout ce qui est sous 55 est un F. Un certificat expiré vaut automatiquement 0.
Les quatre changements qui font passer de A à A+
En pratique, l’écart est presque toujours l’un de ces quatre. Corrigez-les dans l’ordre — chacun est vérifiable indépendamment de l’extérieur, vous pouvez donc relancer un scan après chaque étape.
- •Activer TLS 1.3. Il rapporte des points à lui seul et il est obligatoire pour A+, même avec 100 partout ailleurs.
- •Monter HSTS à au moins max-age=15552000 (180 jours). Un an (31536000) est le choix courant.
- •Servir une chaîne complète, intermédiaires inclus. Un intermédiaire manquant apparaît comme une erreur de chaîne chez certains clients et coûte des points.
- •Activer OCSP stapling pour que la vérification de révocation voyage avec la poignée de main au lieu de divulguer l’IP du visiteur à l’AC.
Configuration nginx qui obtient A+
Un bloc server complet pour un nginx moderne (1.19+ avec OpenSSL 1.1.1+). Si votre nginx a été compilé contre un OpenSSL plus ancien, TLS 1.3 sera silencieusement indisponible quoi que vous écriviez ici — vérifiez d’abord avec 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;
Configuration Apache qui obtient A+
Apache exige que le cache de stapling soit déclaré une fois au niveau serveur, pas dans un hôte virtuel. Le reste va dans le bloc <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"
Les erreurs qui bloquent un site à A
La plus fréquente : activer HSTS avec includeSubDomains sur un domaine qui a encore des sous-domaines en HTTP pur — ils cassent immédiatement, et la réaction habituelle est de supprimer l’en-tête, ce qui vous ramène à A. Déployez HSTS par étapes : commencez par un max-age de 300 secondes, surveillez pendant une semaine, puis montez à un an.
La deuxième erreur la plus fréquente est de croire que TLS 1.3 est actif parce que le certificat est récent. Certificats et versions de protocole sont indépendants. Un certificat tout neuf sur un serveur qui ne parle que TLS 1.2 reste sous 95.
La troisième est un CDN devant l’origine. Si Cloudflare, Fastly ou un répartiteur termine le TLS, la configuration de l’origine n’a aucune importance — la note reflète l’edge, c’est donc là qu’il faut changer le réglage.
Vérifiez par vous-même
Chaque changement se confirme en quelques secondes dans un terminal. TLS 1.3 ne se négocie que si le serveur le propose réellement, HSTS apparaît dans les en-têtes de réponse, et le stapling se voit dans le bloc de réponse 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+ exige-t-il un certificat payant ou à validation étendue ?
Non. Un certificat à validation de domaine (DV) peut atteindre A+ — la note mesure la configuration TLS, pas le niveau de validation. Le type de certificat ne compte que lorsqu’il change la chaîne ou l’algorithme de clé.
Pourquoi ma note a-t-elle baissé après un renouvellement de certificat ?
Les renouvellements changent souvent d’émetteur ou de type de clé, et certains serveurs retombent sur un autre jeu de chiffrements après un rechargement. CertH consigne ce changement dans la section d’analyse de l’évolution du score du rapport de domaine, avec la raison précise.
Faut-il HSTS preload pour atteindre A+ ?
Non. Preload n’est que l’une des deux façons de satisfaire l’exigence HSTS ; un max-age d’au moins 180 jours sans preload suffit. Preload est plus strict et beaucoup plus difficile à annuler, traitez-le comme optionnel.