Mettre en place un serveur Haproxy pour gérer HTTPS

Installation de Haproxy

Mettez à jour votre machine

apt-get update && apt-get upgrade -y

Installer HaProxy:

apt-get install haproxy

Démarrer le service:

service haproxy status
service haproxy start

Créez une copie du fichier de configuration par défaut au cas où:

cd /etc/haproxy
cp haproxy.cfg haproxy.cfg.bak

Modifier le fichier de configuration:

cd /etc/haproxy
nano haproxy.cfg

Ajoutez les parties frontend et backend:

frontend https-in
    bind *:443 ssl crt /etc/haproxy/cert/ no-sslv3
    mode http
    option httplog
    default_backend be_servers

backend be_servers
    mode http
    balance roundrobin 
    server server1 192.168.1.1:80 check 
    server server2 192.168.1.2:80 check

Explication du fichier Haproxy.conf

On a ici spécifié que le certficat SSL se trouvait dans le dossier /etc/haproxy/cert/. Vous pouvez changer la localisation du certificat si vous le désirez, mais assurez-vous que HaProxy a un accès au dossier. Le certificat doit être un fichier .pem, et il doit contenir la clé ET le certificat (voir ma note sur XCA) .

Pour la parties backend, vous pensez à modifier server1 et server2, qui sont les nom des serveurs, ainsi que leurs adresses IP.

⚠️ Haproxy et Apache sur le même serveur

Si vous désirer utliser Haproxy sur un serveur Apache (pour gérer facilement un certificat SSL par exemple), il y a un risque de conflit entre les deux.
En effet, HaProxy et Apache écoutent tout les deux le port 443. Or, on veut seulement que HaProxy écoute sur ce port (car c'est lui qui s'occupe de gérer HTTPS): il nous faut donc modifier les ports d'écoute d'Apache:

cd /etc/apache2/
nano ports.conf

Puis modifier le fichier (vous pouvez laisser le port 80 pour HTTP, c'est 443 qui nous pose problème):

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 8443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 8443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

J'ai changé les valeurs 443 pour 8443, ainsi, Haproxy et Apache ne sont plus en conflit de ports!

#linux #security #https #