Haproxy : ssl version 2016

Après de nombreuses années j'ai décidé de passer ce site en HTTPS exclusif, là encore Haproxy m'a simplifié la tâche car il permet de :

  • rediriger le HTTP vers le HTTPS (envoi d'un code 301)
  • gérer la connexion HTTPS

Par contre pour ne pas "perdre" l'information IP du client d'origine il faut veiller à bien positionner l'option "forwardfor" et à configurer le log de Apache (ici 2.4.x) pour récupérer l'information du header X-Forwarded-For inséré par Haproxy.

Redirection HTTP --> HTTPS. 
Le "Backend" de la partie HTTP devient : 
#------------------------------------------------------------- 
backend    PERF 
    mode    http 
    option    forwardfor 
    http-request redirect scheme https code 301

On ne peut guère faire plus simple ! 
Partie HTTPS, frontend et backend. 
J'ai choisi de rester en HTTPS pour "sortir" de Haproxy et aller sur le serveur WEB car Haproxy est installé sur un "frontal" alors que le serveur Apache est "derrière" (c'est en fait une Machine Virtuelle KVM). 
Frontend. 
Il faut positionner un certain nombre de caractéristiques liées à SSL, par exemple éviter SSLV3 ! Cette partie a été copiée (sauf "tune.ssl.default-dh-param    2048") du site Haproxy.

# Default ciphers to use on SSL-enabled listening sockets. 
# For more information, see ciphers(1SSL). This list is from: 
https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ 
ssl-default-bind-ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
ssl-default-bind-options no-sslv3

tune.ssl.default-dh-param    2048