
🌐 Aussi en: English · Deutsch · Español
☝️ Un petit mot pour ceux qui voulaient juste lire un article de blog : TLS, c’est la raison pour laquelle votre navigateur affiche le petit cadenas. Chaque fois que vous ouvrez une page ici, elle vous parvient chiffrée. Personne sur le même Wi-Fi de café, chez votre fournisseur d’accès ou n’importe où entre les deux ne peut lire par-dessus votre épaule ni échanger discrètement quelques mots. Et non, ça ne s’appelle plus « SSL », même si le site de test ci-dessous s’accroche à l’ancien nom. SSL a pris sa retraite en 2015 ; c’est juste le mot qu’on n’a jamais réussi à mettre à la retraite. Alors quand je me vante plus bas de mes « réglages TLS », je me vante en réalité de l’étanchéité de l’enveloppe qui contient cette phrase même. Je vous en prie. 🤓
De temps en temps, je soumets mon propre blog à Qualys SSL Labs, surtout pour m’assurer que rien n’a discrètement pourri depuis la dernière fois. Le résultat de ce soir m’a fait sourire : A+ sur les deux points d’accès, IPv4 et IPv6. Aucun avertissement, aucun « mais », aucun astérisque.

Une note, c’est bien, mais une note seule ne dit rien. Voici donc, en termes simples, la langue que parle vraiment ce serveur. Même méthode que d’habitude : je pose les questions et je prends les décisions, mon co-admin IA (Claude) a récupéré les données brutes du scan via l’API de SSL Labs et les a comparées à la configuration.
🔐 Ce que le blog prend en charge (la version courte)
| Fonction | Ce que nous faisons | Pourquoi c’est important |
|---|---|---|
| Protocoles | Uniquement TLS 1.3 et TLS 1.2 | TLS 1.0/1.1 et toutes les versions de SSL ont disparu, et avec eux tout leur musée d’attaques. |
| Suites de chiffrement | 6 au total, toutes AEAD : AES-GCM et ChaCha20-Poly1305 | Aucun CBC, donc la famille des attaques par oracle de remplissage (POODLE, Lucky13, GOLDENDOODLE, Zombie POODLE…) n’a rien à se mettre sous la dent. |
| Confidentialité persistante | ECDHE pour chaque connexion | Une clé volée demain ne permet pas de déchiffrer le trafic enregistré aujourd’hui. Les tickets de session sont désactivés, pour que cela reste vrai même lors des reprises de session. |
| Échange de clés post-quantique | X25519MLKEM768 hybride proposé en premier | Les versions actuelles de Chrome et Firefox l’utilisent déjà. « Enregistrer maintenant, déchiffrer plus tard » devient nettement moins intéressant. |
| Certificat | ECDSA P-256 de Let’s Encrypt, nouvelle clé à chaque renouvellement | Plus petit et plus rapide que RSA, et une ancienne clé ne survit jamais à son certificat. |
| HSTS | 1 an, includeSubDomains, preload – aussi sur la redirection du domaine nu | Après la première visite, le navigateur refuse le HTTP non chiffré vers ce domaine. C’est ce qui transforme A en A+. |
| Extras | HTTP/2 via ALPN, TLS_FALLBACK_SCSV, pas de 0-RTT | Rapide, résistant aux rétrogradations et sans données précoces rejouables. |
Tous les tests de vulnérabilité du rapport sont négatifs : Heartbleed, ROBOT, Ticketbleed, FREAK, Logjam, toute la liste. Pas grâce à des correctifs astucieux, mais parce que les briques vulnérables ne sont tout simplement plus proposées.
🤓 Trois détails que j’ai trouvés plus intéressants que la note
- La partie post-quantique est arrivée toute seule. Je n’ai jamais configuré
X25519MLKEM768. Le contrôleur d’ingress embarque un nginx compilé avec OpenSSL 3.5, qui place le groupe hybride en premier par défaut. Parfois, la meilleure fonction de sécurité, c’est simplement de garder ses images à jour. - Pas d’agrafage OCSP – volontairement. SSL Labs l’indique comme « No », ce qui ressemble à une lacune. Ce n’en est pas une : Let’s Encrypt a abandonné OCSP, et les certificats actuels ne contiennent plus aucune URL OCSP. Il n’y a rien à agrafer ; la révocation passe désormais par les CRL et des durées de vie courtes.
- Le prix de la rigueur. 46 des 68 clients simulés se connectent sans problème. Les 22 qui échouent sont des fossiles : Internet Explorer jusqu’à la version 10, Android jusqu’à 4.3, Safari jusqu’à 8, Java 6/7, OpenSSL 0.9.8, Chrome 49 sous Windows XP et un robot d’indexation Baidu de 2015. Je peux vivre avec ça.
🛠️ Où vit le A+ : mon code Ansible
Rien de tout cela n’a été configuré à la main sur le serveur. Toute la pile est déployée par mon dépôt Ansible public aptupgrademe/www_k3s, et le scan ci-dessus a été lancé sur le serveur exactement tel qu’une exécution du playbook le laisse, sans aucune retouche manuelle. Considérez donc cet article comme un rapport de test du code. Si vous voulez reprendre les réglages, voici les deux fichiers à lire :
roles/common_k3s/templates/ingress-nginx-values.yml.j2– protocoles, liste de chiffrements, cache de session, tickets désactivés, et le commentaire qui explique pourquoi l’agrafage OCSP manque délibérément.roles/blog_k3s_deploy/templates/ingress.yml.j2– la demande de certificat ECDSA pour cert-manager, l’en-tête HSTS et la redirection du domaine nu prête pour le preload.
Le cœur du dispositif tient sur un écran :
# ingress controller (shared role, also in front of my Nextclouds)
ssl-protocols: "TLSv1.2 TLSv1.3"
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-prefer-server-ciphers: "false"
ssl_session_tickets off;
# blog ingress: ECDSA certificate with a fresh key on every renewal
cert-manager.io/private-key-algorithm: "ECDSA"
cert-manager.io/private-key-size: "256"
cert-manager.io/private-key-rotation-policy: "Always"
# HSTS, even on the redirects
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;Comme la partie TLS se trouve dans un rôle partagé, les mêmes réglages protègent aussi mes deux instances Nextcloud. Une correction, trois serveurs.
📝 Encore sur la liste
- Inscription à la liste de préchargement HSTS : l’en-tête est prêt pour le preload, mais le domaine n’est pas encore sur les listes des navigateurs. C’est un aller simple, alors je prends mon temps.
- Enregistrement CAA : une entrée DNS qui dit « seul Let’s Encrypt peut émettre des certificats pour ce domaine ». Petit, peu coûteux, pas encore en place.
Envie de vérifier par vous-même ? Le rapport SSL Labs en direct est à un clic. Et si votre propre serveur obtient un B, la liste de chiffrements ci-dessus est un bon point de départ.





