Configuration et gestion https sur HAProxy
Introduction
Vous trouverez ci-dessus quelques options vous permettant de mettre en place les configurations HTTPs , HSTS, etc. sur HAProxy.
Configurations
Configuration de l'HTTPs
La mise en place de l'HTTPs se fait au niveau du frontend en précisant la chose à la suite de l'option bind, exemple avec le port 443:
bind :443 ssl crt /etc/haproxy/ssl/
L'utilisation de l'IPv6 nécessite l'ajout d'une autre ligne de configuration, exemple:
bind :::443 ssl crt /etc/haproxy/ssl/
La gestion des certificats par HAProxy est un des avantages de la solution. En effet, il vous suffit simplement de placer l'ensemble des certificats dans le dossier configuré.
HAProxy s'occupera seul d'assigner le bon certificat au visiteur selon le domaine appelé. Vous pouvez ainsi avoir plusieurs centaines de sites via le même frontend.
Chaque fichier présent dans ce dossier devant contenir les parties suivantes: le certificat, la chaîne de certification et enfin la clé.
Sécuritsation et option de l'HTTPs
Nous venons de voir, dans la section précédente, comment mettre en place l'HTTPs au niveau d'HAProxy.
Une fois ceci en place, nous pouvons désormais voir pour sécuriser cela afin de pouvoir assurer une sécurité accrue pour votre/vos site(s).
Clé Diffie-Hellman (faille logjam)
La faille logjam a été découverte courant 2015 et concerne les clés Diffie-Hellman.
Afin de limiter l'impact de cette faille au niveau HAProxy, vous devez mettre en place l'option suivante afin d'augmenter la taille maximal du paramètre permettant la génération de la clé (dans la section global):
tune.ssl.default-dh-param 2048
Utilisation de HSTS
Le mécanisme HSTS (pour HTTP Strict Transport Security) permet d'indiquer à un navigateur compatible qu'il doit intéragir avec lui en utilisant une connexion sécurisée.
Vous pouvez trouver plus d'information sur la page suivante: Wikipedia HSTS.
L'implémentation de cette option dans HAProxy se fait via l'option suivante (dans le backend):
http-response set-header Strict-Transport-Security "max-age=16000000; includeSubDomains; preload;"
Sécurisation des ciphers et des protocoles
La sécurisation des ciphers et des protocoles supportés étant en constante évolution, nous n'allons ici pas fournir de configuration type car cette dernière pourrait être dépassé d'ici quelques mois.
Nous vous conseillons d'utiliser l'outil de configuration de Mozilla pour cela: lien vers l'outil.