Constructeur d’extrait de configuration TLS
Générer des extraits de configuration TLS pour nginx/Apache
Web Server
Security Profile
Options
Certificate Paths
Configuration Snippet
# TLS Configuration ssl_certificate /etc/ssl/certs/server.crt; ssl_certificate_key /etc/ssl/private/server.key; # Protocols ssl_protocols TLSv1.2 TLSv1.3; # Cipher suites 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 on; # Session resumption ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # OCSP Stapling ssl_stapling on; ssl_stapling_verify on; resolver 1.1.1.1 8.8.8.8 valid=300s; resolver_timeout 5s; # HSTS add_header Strict-Transport-Security 'max-age=63072000; includeSubDomains; preload' always;
Configuration Notes
- Based on Mozilla SSL Configuration Generator recommendations
- Modern profile requires clients with TLS 1.3 support
- Intermediate profile is recommended for most deployments
- Test your configuration with SSL Labs after deployment
Le générateur de snippets de configuration TLS produit des extraits de configuration SSL/TLS prêts pour la production pour nginx, Apache et d'autres serveurs web, avec les bonnes suites de chiffrement, versions de protocole, en-têtes HSTS et paramètres OCSP stapling alignés sur les profils de sécurité recommandés par Mozilla. Sélectionnez un serveur et un profil de sécurité, et obtenez un bloc de configuration complet que vous pouvez déployer en toute confiance.
Comprendre la configuration TLS
Bien configurer TLS est l'une des tâches les plus délicates de l'administration de serveurs web. Le protocole a évolué de manière spectaculaire au cours de la dernière décennie : TLS 1.0 et 1.1 sont désormais dépréciés, des dizaines de suites de chiffrement ont été retirées en raison de vulnérabilités, et de nouvelles fonctionnalités comme l'OCSP stapling et HTTP Strict Transport Security sont devenues essentielles. Une configuration qui obtenait un A+ sur SSL Labs il y a cinq ans pourrait obtenir un C aujourd'hui si elle autorise encore TLS 1.0 ou inclut des chiffrements faibles comme RC4 ou 3DES.
Le défi est qu'une seule directive mal configurée peut soit casser la compatibilité pour des utilisateurs légitimes, soit laisser votre serveur vulnérable. Activez TLS 1.3 uniquement et vous excluez les utilisateurs sur d'anciens appareils Android. Incluez un chiffrement en mode CBC pour la compatibilité et vous pourriez être exposé à des attaques padding oracle si votre implémentation n'est pas soigneuse. Oubliez de configurer ssl_prefer_server_ciphers et les clients pourraient négocier un chiffrement plus faible que nécessaire. Les permutations sont suffisamment complexes pour que même les administrateurs système expérimentés copient des configurations depuis des articles de blog, dont certains ont des années de retard.
Ce générateur élimine cette incertitude. Il produit des configurations basées sur les recommandations du SSL Configuration Generator de Mozilla, qui sont maintenues par des ingénieurs en sécurité et mises à jour à mesure que le paysage des menaces évolue. Vous choisissez un profil de sécurité -- Modern pour une sécurité maximale, Intermediate pour une large compatibilité, ou Legacy pour les systèmes devant supporter des clients très anciens -- et le générateur produit un bloc de configuration complet et commenté pour votre logiciel serveur cible. Chaque directive est expliquée pour que vous compreniez ce qu'elle fait, pas seulement comment la coller.
Comment générer un snippet de configuration TLS
- Sélectionnez votre serveur web cible (nginx, Apache, HAProxy, etc.)
- Choisissez un profil de sécurité : Modern, Intermediate ou Legacy
- Définissez optionnellement les chemins vers votre certificat et votre clé privée
- Copiez le bloc de configuration généré dans la configuration de votre serveur
Comparaison des profils de sécurité
| Profil | Protocoles | Client compatible le plus ancien | Cas d'usage |
|---|---|---|---|
| Modern | TLS 1.3 uniquement | Chrome 70, Firefox 63, Safari 12.1 | Nouveaux déploiements sans besoin de clients anciens |
| Intermediate | TLS 1.2 + TLS 1.3 | Chrome 30, Firefox 27, IE 11 (Win 7+), Android 5.0 | La plupart des sites web en production |
| Legacy | TLS 1.0 + TLS 1.1 + TLS 1.2 + TLS 1.3 | IE 8 (Win XP), Android 2.3 | Systèmes anciens, migration progressive |
Exemples de configurations générées
nginx -- Profil Intermediate
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.com-chain.pem;
ssl_certificate_key /etc/ssl/private/example.com.key;
# Protocols
ssl_protocols TLSv1.2 TLSv1.3;
# Cipher suites (intermediate compatibility)
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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# HSTS (1 year, including subdomains)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;
resolver_timeout 5s;
# Session settings
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
}
Apache -- Profil Modern (TLS 1.3 uniquement)
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.com.crt
SSLCertificateKeyFile /etc/ssl/private/example.com.key
SSLCertificateChainFile /etc/ssl/certs/chain.pem
# TLS 1.3 only
SSLProtocol -all +TLSv1.3
SSLOpenSSLConfCmd Curves X25519:secp256r1:secp384r1
# HSTS
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# OCSP Stapling
SSLUseStapling On
SSLStaplingCache shmcb:/var/run/ocsp(128000)
</VirtualHost>
Quand utiliser cet outil
- Mise en place d'un nouveau serveur HTTPS -- générez une configuration sécurisée de base au lieu de copier des snippets obsolètes depuis des articles de blog
- Durcissement TLS -- mettez à niveau une configuration existante depuis des suites de chiffrement faibles et des versions de protocole anciennes vers les bonnes pratiques actuelles
- Préparation d'audit de sécurité -- générez des configurations qui obtiendront une note A+ aux tests Qualys SSL Labs
- Exigences de conformité -- produisez des configurations conformes aux exigences PCI DSS, HIPAA ou SOC 2 pour le chiffrement en transit
- Apprentissage des bonnes pratiques TLS -- chaque directive inclut des commentaires expliquant son objectif, rendant la configuration générée pédagogique
- Migration de serveur -- générez des configurations équivalentes lors d'une migration d'Apache vers nginx ou inversement
Directives clés de configuration TLS expliquées
Sélection des suites de chiffrement
Les suites de chiffrement définissent les algorithmes utilisés lors du handshake TLS et du chiffrement des données :
| Composant | Choix moderne | Fonction |
|---|---|---|
| Échange de clés | ECDHE | Forward secrecy via des clés éphémères |
| Authentification | RSA ou ECDSA | Vérification de l'identité du serveur |
| Chiffrement de masse | AES-128-GCM, AES-256-GCM, CHACHA20-POLY1305 | Chiffrement des données |
| MAC | AEAD (intégré dans GCM/POLY1305) | Intégrité des données |
HSTS (HTTP Strict Transport Security)
L'en-tête Strict-Transport-Security indique aux navigateurs de toujours utiliser HTTPS :
max-age=31536000-- mémoriser pendant 1 an (31 536 000 secondes)includeSubDomains-- appliquer à tous les sous-domainespreload-- s'inscrire aux listes de préchargement HSTS des navigateurs (à soumettre séparément sur hstspreload.org)
OCSP Stapling
Sans le stapling, les navigateurs doivent contacter le répondeur OCSP de l'autorité de certification pour vérifier la révocation du certificat, ajoutant de la latence. Avec le stapling activé, le serveur récupère la réponse OCSP et l'inclut dans le handshake TLS, améliorant les performances et la confidentialité.
Gestion des sessions
ssl_session_timeout 1d; # Sessions valides pendant 1 jour
ssl_session_cache shared:SSL:10m; # Cache partagé de 10 Mo (~40 000 sessions)
ssl_session_tickets off; # Désactiver les tickets (ils cassent la forward secrecy)
Les session tickets sont désactivés dans les configurations recommandées car ils utilisent une clé unique qui, si elle est compromise, permet de déchiffrer toutes les sessions qui l'ont utilisée. Le cache de sessions côté serveur fournit la reprise de session sans ce risque.
Configuration TLS en pratique
Le conseil le plus important pour la configuration TLS est de commencer avec le profil Intermediate et de ne s'en écarter que si vous avez une raison spécifique. Le profil Intermediate supporte TLS 1.2 et 1.3 avec des suites de chiffrement AEAD robustes, ce qui couvre tous les navigateurs et systèmes d'exploitation activement maintenus. C'est le bon choix pour la grande majorité des sites web publics. Le profil Modern (TLS 1.3 uniquement) est approprié pour les API et services internes où vous contrôlez les clients, mais il exclura les utilisateurs sur d'anciens appareils Android ou des environnements d'entreprise avec des serveurs proxy obsolètes.
Après le déploiement de votre configuration, testez-la avec Qualys SSL Labs (ssllabs.com/ssltest) pour vérifier que votre serveur est correctement configuré. Une note A+ nécessite HSTS avec un max-age d'au moins 6 mois et une configuration TLS propre sans protocoles ni chiffrements faibles. Si vous obtenez une note inférieure, le rapport vous indiquera exactement quoi corriger -- généralement un TLS 1.0 résiduel ou une suite de chiffrement faible laissée dans la configuration d'une version précédente.
Un détail souvent négligé est la configuration de l'OCSP stapling. Sans cela, les navigateurs doivent effectuer une requête séparée vers le serveur OCSP de la CA pour vérifier si votre certificat a été révoqué, ajoutant 100 à 300 ms de latence à la première connexion. Avec le stapling, votre serveur récupère lui-même la réponse OCSP et l'inclut dans le handshake TLS, éliminant ce délai. La configuration est simple mais nécessite un résolveur DNS fonctionnel sur votre serveur -- si le résolveur est mal configuré, le stapling échoue silencieusement et les connexions reviennent au chemin non-stapled plus lent.
Questions fréquentes
Dois-je utiliser le profil Modern ou Intermediate ? Utilisez Intermediate pour la plupart des sites web en production. Il prend en charge TLS 1.2 et 1.3, couvrant la quasi-totalité des navigateurs et systèmes d'exploitation activement maintenus. Utilisez Modern (TLS 1.3 uniquement) pour les services internes, les API ou les nouveaux déploiements où vous pouvez confirmer que tous les clients supportent TLS 1.3. Évitez le profil Legacy sauf si vous devez prendre en charge des clients plus anciens que Windows 7 ou Android 5.0.
Pourquoi désactiver TLS 1.0 et 1.1 ? TLS 1.0 et 1.1 présentent des vulnérabilités connues (BEAST, POODLE) et ont été officiellement dépréciés par la RFC 8996 en mars 2021. Les principaux navigateurs ont supprimé la prise en charge de TLS 1.0/1.1 en 2020. PCI DSS 3.2+ exige la désactivation de TLS 1.0 pour la conformité. Il y a rarement une raison légitime de garder ces protocoles activés.
Que signifie ssl_prefer_server_ciphers off ?
Avec TLS 1.3, la préférence de chiffrement est toujours déterminée par le serveur indépendamment de ce paramètre. Pour TLS 1.2 avec le profil Intermediate, le régler sur off laisse le client choisir sa suite de chiffrement préférée, ce qui fonctionne bien car toutes les suites de la liste recommandée sont également sécurisées. Le profil Modern omet entièrement cette directive.
Comment activer le préchargement HSTS ?
Le préchargement HSTS signifie que votre domaine est codé en dur dans les listes HSTS des navigateurs, de sorte que le navigateur utilise toujours HTTPS même lors de la toute première visite. Ajoutez preload à votre en-tête HSTS : max-age=31536000; includeSubDomains; preload. Puis soumettez votre domaine sur hstspreload.org. Soyez prudent : le préchargement est difficile à annuler, et il s'applique à tous les sous-domaines, donc assurez-vous que chaque sous-domaine supporte HTTPS au préalable.
Pourquoi les session tickets sont-ils désactivés dans la configuration recommandée ? Les session tickets TLS utilisent une clé symétrique stockée sur le serveur. Si cette clé est compromise ou jamais renouvelée, un attaquant peut déchiffrer toute session enregistrée qui a été reprise avec un ticket. Désactiver les tickets et utiliser le cache de sessions côté serveur à la place préserve la forward secrecy. Si vous avez besoin de tickets (par ex. pour des serveurs distribués sans cache partagé), renouvelez la clé de ticket au moins quotidiennement.
Comment tester ma configuration TLS après déploiement ?
Utilisez Qualys SSL Labs sur ssllabs.com/ssltest pour une analyse complète. Pour des vérifications rapides en ligne de commande, utilisez openssl s_client -connect votreserveur.com:443 pour vérifier la version du protocole et le chiffrement négocié. La commande nmap --script ssl-enum-ciphers -p 443 votreserveur.com liste tous les chiffrements et protocoles supportés.
Outils associés
- PEM Bundle Merger - Construire le fichier de chaîne de certificats référencé dans la configuration générée
- Certificate Expiry Checker - Surveiller les certificats utilisés dans votre configuration TLS
- X.509 Certificate Viewer - Inspecter les certificats avant le déploiement avec la configuration générée
- PEM Bundle Splitter - Séparer les bundles de certificats pour préparer les fichiers de votre serveur
- Convert DER to PEM - Convertir les certificats au format PEM requis par nginx et Apache