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 :

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

Création du certificat auto-signé :

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

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

Création du PEM :

1 $ cat server.crt server.key > www.alasta.lab.pem
2 $ 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)

1 $ 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).

1 $ 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