1. Terminaison SSL (Offloading) #
HAProxy gère le déchiffrement pour soulager les serveurs web.
Configuration du certificat #
C'est la méthode la plus courante. HAProxy possède le certificat SSL et communique en HTTP clair avec les backends sur un réseau privé sécurisé.
frontend https-in
bind *:443 ssl crt /etc/ssl/certs/mon-site.pem
default_backend app_serversNote : Le fichier .pem doit contenir le certificat et la clé privée.
2. SSL Pass-through #
Transmettre le flux chiffré sans inspection.
Utilisation du mode TCP #
Si vous ne voulez pas que HAProxy déchiffre le trafic (pour des raisons de confidentialité totale), utilisez le mode TCP (Layer 4).
frontend stream-in
mode tcp
bind *:443
default_backend secure_web3. Forcer le HTTPS #
Rediriger automatiquement les utilisateurs vers le port sécurisé.
Redirection HTTP vers HTTPS #
Une règle simple dans le frontend HTTP suffit.
frontend http-in
bind *:80
http-request redirect scheme https unless { ssl_fc }Conclusion #
Un point central pour la sécurité.
Performance et Sécurité #
En centralisant le SSL, vous simplifiez la gestion des certificats (ex: Let's Encrypt) et optimisez les performances de vos serveurs d'application.
Mise en pratique : certificats et configuration complète #
Générer un certificat, configurer et tester.
Préparer le certificat #
HAProxy attend un fichier PEM unique contenant la chaîne de certificats puis la clé privée.
# Certificat auto-signé pour tester
openssl req -x509 -newkey rsa:4096 -nodes -days 365 -keyout app.key -out app.crt -subj "/CN=app.exemple.fr"
cat app.crt app.key > /etc/haproxy/certs/app.pem && chmod 600 /etc/haproxy/certs/app.pem
# Vérifier le contenu et la date d'expiration
openssl x509 -in /etc/haproxy/certs/app.pem -noout -subject -enddateFrontend HTTPS et redirection #
global
ssl-default-bind-ciphersuites TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
frontend https_in
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/ alpn h2,http/1.1 # un répertoire = plusieurs certificats (SNI)
http-request redirect scheme https unless { ssl_fc }
http-response set-header Strict-Transport-Security "max-age=31536000; includeSubDomains"
http-request set-header X-Forwarded-Proto https if { ssl_fc }
default_backend app
backend app
balance roundrobin
server web1 10.0.0.11:8080 check
server web2 10.0.0.12:8080 checkTester et diagnostiquer #
haproxy -c -f /etc/haproxy/haproxy.cfg && sudo systemctl reload haproxy
curl -vkI https://app.exemple.fr 2>&1 | grep -E "SSL|TLS|HTTP/"
openssl s_client -connect app.exemple.fr:443 -servername app.exemple.fr </dev/null 2>/dev/null | openssl x509 -noout -dates -issuer
nmap --script ssl-enum-ciphers -p 443 app.exemple.fr # lister les suites acceptées
echo "show ssl cert" | sudo socat stdio /var/run/haproxy.sock # certificats chargés (Runtime API)Bonne Pratique : Automatisez le renouvellement avec ACME (voir l'article ACME) et rechargez HAProxy sans coupure avecsystemctl reload haproxyou la commande Runtimeset ssl cert.
SSL passthrough #
Laisser le chiffrement aux backends.
Configuration #
En SSL passthrough, HAProxy ne déchiffre pas : il travaille en mode TCP et route selon le nom demandé dans le message TLS (SNI). Les backends gardent leurs certificats ; HAProxy ne voit ni URL ni en-têtes.
frontend tls_in
bind :443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if { req.ssl_hello_type 1 }
use_backend app_tls if { req.ssl_sni -i app.example.com }
default_backend web_tls
backend app_tls
mode tcp
server app1 10.0.0.11:443 check| Mode | HAProxy voit le HTTP | Certificat sur HAProxy | Usage |
|---|---|---|---|
| Terminaison | Oui | Oui | Routage par URL, en-têtes, WAF |
| Ré-chiffrement | Oui | Oui (et sur les backends) | Exigence de chiffrement de bout en bout |
| Passthrough | Non | Non | Certificats gérés par l'application, mTLS de bout en bout |
Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
💬 Questions sur cette leçon
Aucune question pour l'instant : soyez le premier à demander de l'aide ou à partager votre configuration.
Glossaire de la formation
ACL (Access Control List)
Liste de contrôle d'accès définissant les permissions accordées sur des ressources. Dans HAProxy, les ACL sont des conditions flexibles permettant de ...
Backend
Section de la configuration HAProxy définissant un pool de serveurs cibles vers lesquels le trafic est redirigé. C'est ici que l'on configure l'algori...
Frontend
Section de la configuration HAProxy qui définit comment les requêtes sont reçues du côté client (adresse IP, port, certificats SSL) avant d'être envoy...
GSLB (Global Server Load Balancing)
Technique de répartition de charge à l'échelle mondiale, utilisant généralement le DNS pour diriger les utilisateurs vers le datacenter le plus proche...
HAProxy
Logiciel de load balancing et de proxying haute performance pour TCP et HTTP. HAProxy est le standard de l'industrie pour la gestion de trafic à très ...
Health Check
Mécanisme automatisé permettant au load balancer de tester périodiquement la disponibilité des serveurs afin d'exclure temporairement ceux qui sont en...
Load Balancing
Dispositif qui distribue le trafic applicatif sur un ensemble de serveurs afin d'optimiser l'usage des ressources, de minimiser les temps de réponse e...
SSL Offloading
Processus consistant à déléguer le déchiffrement du trafic HTTPS au load balancer pour libérer de la puissance CPU sur les serveurs d'application.
Stickiness
Mécanisme garantissant qu'un utilisateur est systématiquement redirigé vers le même serveur backend durant toute sa session, indispensable pour les ap...
Slowloris
Type d'attaque par déni de service (DoS) qui consiste à ouvrir de nombreuses connexions HTTP et à les maintenir ouvertes le plus longtemps possible en...
DoS / DDoS
Attaque visant à rendre un service indisponible en submergeant le serveur ou le réseau de trafic. On parle de DDoS (Distributed Denial of Service) lor...
SSL / TLS
Protocoles de sécurisation des échanges sur internet. TLS (Transport Layer Security) est le successeur moderne de SSL (Secure Sockets Layer). Ils perm...
Articles recommandés
Gestion des certificats SSL/TLS avec Let's Encrypt et ACME
Apprenez à automatiser la génération et le renouvellement de vos certificats SSL/TLS avec Let's E...
Protocole ACME : serveur ACME, challenges http-01 et dns-01, automatisation TLS
Comprendre le protocole ACME : rôle du serveur ACME (Let's Encrypt, ZeroSSL, step-ca), challenges...
Maîtriser les ACLs dans HAProxy : Le Guide Complet
Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...
Maîtriser les ACLs dans HAProxy
Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...
HAProxy comme Ingress Controller Kubernetes : Le Guide de Production
Découvrez comment utiliser HAProxy comme Ingress Controller dans Kubernetes. Architecture Direct-...
HAProxy : Guide détaillé des directives de configuration
Une exploration complète des directives essentielles de HAProxy : de bind à http-check, apprenez ...
Bonnes Pratiques HAProxy : Optimisation, Sécurité et Haute Disponibilité
Découvrez les meilleures pratiques pour configurer HAProxy afin d'assurer performance, sécurité e...
HAProxy dans Kubernetes : L'Ingress Controller Haute Performance
Découvrez en profondeur l'intégration de HAProxy dans Kubernetes. Architecture Direct-to-Pod, opt...
Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité
Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...