HAProxy - Mise en place d'une VIP en SSL (Offloading)
Alasta 15 Décembre 2014 haproxy HAProxy SSL Chiffrement Offloading
Description : Nous allons voir comment ajouter une couche SSL à une VIP HTTP.
Architecture en SSL Offloading :
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 :
On voit bien dans la barre d'adresse que le site est bien en HTTPS.