Haproxy : passage en HTTPS
Haproxy : passage en HTTPS jppHAPROXY et HTTPS.
Depuis les événements frappant Internet (Snowden …) tout le monde veut passer en HTTPS avec des éléments récents (Heartbleed est passé par là).
J'utilise « Haproxy » pour gérer des sites et j'attendais avec impatience qu'il supporte SSL, ce qui semble fait dans les versions 1.5. Malheureusement il n'existe pas encore de version « stable » il faut donc passer par les versions « dev ». Il faudra suivre le rythme des développeurs pour rester à la pointe en attendant la version stable. Quelques séances de test en perspective à chaque avancée et de la doc à lire pour exploiter les nouvelles fonctionnalités.
L'avantage d'utiliser Haproxy pour gérer le SSL c'est qu'il n'y a rien à modifier dans la configuration Apache !
Pour les tests j'ai utilisé la dernière version de HAPROXY disponible, ici la version 1.5-dev24 à compiler avec :
make TARGET=linux2628 USE_OPENSSL=1 USE_ZLIB=1
Ce sont les paramètres « mini » permettant l'utilisation de SSL et de la compression.
Aux paramètres existants dans mon « haproxy.cfg » il m'a suffi d'ajouter les sections traitant le SSL (FRONTEND et BACKEND) :
frontend SSL-PUBLIC
bind *:443 ssl crt /etc/haproxy/ssl/ssl-cert-snakeoil.pem
#
mode http
option httpclose
option forwardfor
reqadd X-Forwarded-Proto:\ https
# OK
acl SS-PR1 hdr_beg(host) performance
use_backend SS-PERF if SS-PR1
# OK
acl SS-CN1 hdr_beg(host) consult
use_backend CONS if SS-CN1
# OK
acl SS-GN1 hdr_beg(host) gandizzop
use_backend GAND if SS-GN1
# OK
acl SS-GAL hdr_beg(host) galerie
use_backend GALERIE if SS-GAL
#
backend SS-PERF
option httpchk balance roundrobin
cookie SERVERID rewrite
# cookie SERVERID insert indirect nocache
server local 127.0.0.1:82 maxconn 127
#
option httpclose
option abortonclose
retries 2
compression algo gzip
compression offload
backend SS-CONS
option httpchk
balance roundrobin
cookie SERVERID rewrite
# cookie SERVERID insert indirect nocache
server local 127.0.0.1:83 maxconn 127
#
option httpclose
option abortonclose
retries 2
compression algo gzip
compression offload
Rien à changer du coté de la configuration Apache …. au passage on compresse les données envoyées avec gzip.
Dans le cas de Drupal 7 (7.27 dans mon cas) l'accès est anormal, la première page est accédée normalement mais certains éléments, dont les CSS et JS, sont accédés en HTTP simple ce qui provoque un « blocage » de ces ressource au niveau de Firefox ou Chrome. Il m'a été nécessaire de modifier un fichier de configuration (sites/default/settings.php) pour y ajouter la ligne suivante :
$base_url = 'https://le_nom_du_site'; // NO trailing slash!
Dans mon cas cette ligne avait été mise en commentaire et cela ne gênait pas du tout le fonctionnement en HTTP. Après l'ajout de cette ligne le fonctionnement en HTTP reste parfaitement OK et l'accès en HTTPS est enfin correct !