Architecture en SSL Offloading :

Achitecture HAProxy

Prérequis :

  • 1 serveur Linux sur lequel installer HAProxy
  • 3 serveurs Linux avec un serveur Web d’installé (dans cet exemple se sont 3 Apache) et fonctionnels
  • 1 poste pour faire les tests

Notes :

  • Personnellement j’ai fait les tests avec des machines virtuelles via VirtualBOX.
  • Les différents serveurs sont en CentOS avec SELinux d’activé.
  • On partiera du principe que HAProxy est installé (pour une gestion native du SSL, HAProxy doit être au minimum en 1.5).
  • Dans cet exemple le certificat sera auto-signé.
  • Nous mettrons en place su SSL Offloading : le HTTPS sera entre le Client et HAProxy, le HAProxy et backend restera en HTTP.

Génération du certiticat :

Génération du bi-clé sans pass phrase :

$ openssl genrsa  -out server.key 2048
Generating RSA private key, 2048 bit long modulus
................................................................................................................................................................................+++
.........................+++
e is 65537 (0x10001)

Création du certificat auto-signé :

$ openssl req -new -x509 -nodes -sha256 -key server.key -out server.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:FR
State or Province Name (full name) []:IDF
Locality Name (eg, city) [Default City]:Paris
Organization Name (eg, company) [Default Company Ltd]:Alasta Corp
Organizational Unit Name (eg, section) []:SI
Common Name (eg, your name or your server's hostname) []:www.alasta.lab
Email Address []:monemail@alasta.lab

Note :* le Common Name doit correspondre au FQDN de votre serveur/service.

Création du PEM :

$ cat server.crt server.key > www.alasta.lab.pem
$ cp www.alasta.lab.pem /etc/pki/tls/private/

Configuration du HAProxy

Nous allons reprendre la configuration existante vu dans les précédent billets avec les modifications imduite par le passage de HAProxy 1.4 à 1.5 ainsi que les différents paramètres SSL.

Contenu du /etc/haproxy/haproxy.conf :

L’IP 192.168.5.17 est dédiée pour les stats on crée un IP secondaire 192.168.5.18 (sur ma VM le réseau est porté sur eth2)

$ ifconfig eth2:1 192.168.5.18

A customiser suivant vos besoins, car dans mon cas je doit passer la commande à chaque reboot (c’est voulu pour mes tests).

$ service haproxy start

Test de la configuration :

Il reste à tester via un navigateur, vous aurez un warning et une demande de validation si vous utilisez comme dans l’exemple un certificat auto-signé.

Résultat dans le navigateur :

Résultat HAProxy SSLOffloading navigateur

On voit bien dans la barre d’adresse que le site est bien en HTTPS.

Résultat dans les stats :

Résultat HAProxy SSLOffloading stats