La configuration SSL/TLS a considerablement evolue. Voici l’etat actuel des bonnes pratiques pour 2026 — ce qu’il faut activer, ce qu’il faut desactiver et ce qui arrive.
Versions de protocole
| Protocole | Statut | Action |
|---|---|---|
| SSL 2.0, 3.0 | Casse | Desactiver — vulnerabilites critiques (POODLE, DROWN) |
| TLS 1.0 | Obsolete (2021) | Desactiver — vulnerabilite BEAST |
| TLS 1.1 | Obsolete (2021) | Desactiver — pas de support des chiffrements modernes |
| TLS 1.2 | Securise | Activer — avec chiffrements AEAD uniquement |
| TLS 1.3 | Standard actuel | Activer — le plus rapide, le plus securise |
Nginx : ssl_protocols TLSv1.2 TLSv1.3;
Apache : SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Suites de chiffrement
TLS 1.3 (aucune configuration necessaire)
Les 5 suites de chiffrement sont toutes securisees. N’essayez pas de personnaliser — vous ne pouvez pas faire mieux.
TLS 1.2 (restreindre a AEAD uniquement)
# Nginx
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
Regles :
- Uniquement les suites
ECDHE-*— assure la confidentialite persistante - Uniquement
*-GCM-*ou*-CHACHA20-*— chiffrements AEAD uniquement - Pas de chiffrements CBC — vulnerables a BEAST, Lucky13
ssl_prefer_server_ciphers off— laisser le client choisir (les clients modernes choisissent la meilleure option)
Gestion des certificats
| Pratique | Pourquoi |
|---|---|
| Utiliser des cles ECDSA P-256 | Plus petites, plus rapides que RSA 2048 |
| Automatiser le renouvellement | La validite de 47 jours d’ici 2029 rend le renouvellement manuel impraticable |
Servir fullchain.pem | Previent les erreurs de chaine de confiance |
| Surveiller l’expiration des certificats | Definir des alertes pour le jour 60 sur 90 |
| Utiliser la surveillance Certificate Transparency | Detecter les certificats non autorises |
| Faire tourner les cles au renouvellement | Ne pas reutiliser les cles privees entre les certificats |
En-tetes de securite
# HSTS -- toujours utiliser HTTPS (commencer avec un max-age court, augmenter ensuite)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
# Empecher le reniflage de type MIME
add_header X-Content-Type-Options "nosniff" always;
# Empecher le clickjacking
add_header X-Frame-Options "SAMEORIGIN" always;
# Mettre a niveau les sous-ressources non securisees
add_header Content-Security-Policy "upgrade-insecure-requests" always;
Optimisation des performances
| Parametre | Configuration | Avantage |
|---|---|---|
| HTTP/2 | listen 443 ssl http2; | Multiplexage, compression des en-tetes |
| Cache de session | ssl_session_cache shared:SSL:10m; | Evite le re-handshake pour les visiteurs de retour |
| Tickets de session desactives | ssl_session_tickets off; | Meilleure confidentialite persistante |
| OCSP stapling | ssl_stapling on; | Verification de certificat plus rapide, meilleure confidentialite |
| Early data (0-RTT) | Par defaut dans TLS 1.3 | Reprise a latence zero (utiliser avec precaution) |
Configuration Nginx complete (prete pour la production)
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
root /var/www/html;
}
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
Test : Entrez votre domaine sur SSL Labs — cette configuration devrait obtenir la note A+.
Ce qu’il ne faut PAS faire
| Mauvaise pratique | Pourquoi | Que faire a la place |
|---|---|---|
ssl_protocols TLSv1 TLSv1.1; | Obsolete, vulnerable | TLS 1.2 + 1.3 uniquement |
ssl_ciphers ALL; | Inclut des chiffrements faibles | Liste explicite ECDHE + AEAD |
ssl_prefer_server_ciphers on; (TLS 1.3) | Inutile — les chiffrements TLS 1.3 sont tous securises | off |
Utiliser cert.pem au lieu de fullchain.pem | Chaine manquante -> erreurs de confiance | Toujours fullchain.pem pour Nginx |
| Certificats auto-signes en production | Avertissements du navigateur, pas de confiance | Let’s Encrypt (gratuit) |
| Meme cle privee pendant des annees | Limite le confinement des dommages | Faire tourner a chaque renouvellement |
| Pas de HSTS | Vulnerable aux attaques par retrogradation | Activer apres les tests |
max-age=0 pour HSTS | Desactive effectivement HSTS | Commencer a 300, augmenter a 63072000 |
Questions frequemment posees
Comment tester ma configuration SSL ?
SSL Labs Server Test — entrez votre domaine et obtenez un rapport detaille avec une note (A-F). Verifiez le support des protocoles, la force des chiffrements, la validite de la chaine et les vulnerabilites connues.
Quelle note dois-je viser ?
A+ pour les sites en production. Cela necessite : TLS 1.2+ uniquement, chiffrements AEAD, chaine valide, HSTS avec un long max-age. La configuration ci-dessus obtient A+.
A quelle frequence dois-je revoir ma configuration SSL ?
Annuellement, ou lorsqu’une nouvelle vulnerabilite est annoncee. Abonnez-vous a la page de statut de Let’s Encrypt et suivez le Mozilla SSL Configuration Generator pour des recommandations mises a jour.
Existe-t-il un outil qui genere la bonne configuration pour moi ?
Oui — Mozilla SSL Configuration Generator. Selectionnez votre serveur (Nginx, Apache, etc.), votre version de serveur, et il genere une configuration recommandee. Le profil “Modern” correspond aux pratiques de cet article.