Debian 8 + Haproxy + certificat SSL Let’s Encrypt

Allez hop, on continue cette fois-ci avec nos serveurs que l’on souhaite accessibles en https.

On va sécuriser la lien entre notre HAproxy et les serveurs de nos backends.

thierry-bugeat-haproxy-nossl

Installer le package certbot (https://certbot.eff.org/#debianjessie-haproxy)

Pour Debian 8 Jessie, nous devons ajouter le dépôt des backports en ajoutant la ligne suivante à notre fichier « /etc/apt/sources.list »

deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

Avant de pouvoir installer certbot.

apt-get update
apt-get install certbot -t jessie-backports

Obtenir notre certificat

A la racine de notre site web (Exemple: « /var/www/thierry.bugeat.com »), nous créons un dossier « .well-known ». Le serveur web doit être configuré pour accepter toutes les requêtes à destination de ce dossier.

Nous pouvons maintenant demander un certificat pour notre nom de domaine « thierry.bugeat.com »…

certbot certonly --webroot -w /var/www/thierry.bugeat.com/ -d thierry.bugeat.com

Vous devez saisir un email…

thierry-bugeat-lets-encrypt

…puis accepter les termes et conditions.

Si tout s’est bien déroulé, le message suivant s’affiche et votre certificat se trouve maintenant dans le dossier « /etc/letsencrypt/archive/thierry.bugeat.com »

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/XXXXXXXXXX/fullchain.pem. Your cert
   will expire on 2017-06-05. To obtain a new or tweaked version of
   this certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - If you lose your account credentials, you can recover through
   e-mails sent to XXXXXXXXXX@XXXXXXXXXX.
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

NB: Vou pouvez demander autant de certificats SSL que de noms de domaines.

...
certbot certonly --webroot -w /var/www/wallabag/web/ -d wallabag.bugeat.com
...

Activation de SSL sur Haproxy:
Préparons nos certificats pour qu’ils puissent être utilisés par Haproxy.

cd /etc/letsencrypt/archive/thierry.bugeat.com && cat cert1.pem privkey1.pem > haproxy.pem 
cd /etc/letsencrypt/archive/wallabag.bugeat.com && cat cert1.pem privkey1.pem > haproxy.pem

Nous pouvons maintenant les utiliser de la façon suivante

...
...
...
# =============
# --- HTTPS ---
# =============

frontend FRONTEND_HTTPS
  mode http
  bind 0.0.0.0:443 \
    ssl \
      crt /etc/letsencrypt/archive/thierry.bugeat.com/haproxy.pem \
      crt /etc/letsencrypt/archive/wallabag.bugeat.com/haproxy.pem
  use_backend BACKEND_HTTP1 if { ssl_fc_sni thierry.bugeat.com }
  use_backend BACKEND_HTTP1 if { ssl_fc_sni wallabag.bugeat.com }
...
...
...

Veuillez noter que les backends utilisés sont les mêmes que pour le HTTP. Nul besoin d’en créer des nouveaux.

Après avoir relancé Haproxy, vous pouvez vous rendre sur votre site en https et constater que la connexion est sécurisé.
thierry-bugeat-haproxy-ssl

Let’s encrypt… mission réussie.