Table des matières

Utiliser un certificat Letsencrypt

Letsencrypt permet d'obtenir des certificats SSL DV gratuitement. Plus important que l'aspect gratuit, c'est l'automatisation qui est importante: une fois que c'est en place, les certificats seront renouvelés automatiquement par la suite (et heureusement, parce que les certificats signés par l'autorité de Letsencrypt sont valides seulement 90 jours)

Installation sur une iPasserelle

Pour installer le client:

yum install smeserver-letsencrypt-client

Il ne reste qu'à le configurer:

db configuration setprop Letsencrypt Uri prod
L'URI par défaut est staging qui pointe sur un serveur de test de Letsencrypt. Ça permet de faire des tests pour s'assurer que tous nos noms DNS sont bien en place et de ne pas saturer le serveur de production. Ça permet aussi de ne pas atteindre la limite de certificat qui est assez faible sur les serveurs de productions de Letsencrypt
Une fois les tests fait en staging, pour passer en prod, il faut supprimer la clé du compte pour que le client Letsencrypt en génère une nouvelle qu'il enregistrera sur le serveur de production de Letsencrypt.
rm -f /home/e-smith/db/letsencrypt.sh/private_key.*

Par défaut, tous les domaines déclarés sur le serveur et tous les noms DNS attachés au domaine principal seront ajouté en tant que SubjectAltName dans le certificat. Il est possible d'en désélectionner quelques un

db domains setprop domaine.org Letsencrypt disabled
db hosts wpad.domaine.net disabled
signal-event letsencrypt-update

Domaines ProxyPass

Sans entrer dans les détails du fonctionnement du protocole ACME utilisé pour valider un nom de domaine, les serveurs de letsencrypt doivent pouvoir faire des requêtes sur /.well-known/acme-challenge

Pas de problème particulier pour les domaines classiques, mais pour les domaines qui font du ProxyPass, on peut avoir plusieurs cas de figure, et plusieurs réglages possibles, avec la prop ProxyPassACMEChallenges

db domains setprop backup.domaine.net ProxyPassACMEChallenge enabled
signal-event letsencrypt-update

Il y a un autre cas, un peu plus rare: quand un nom doit être valide pour 2 machines différentes. Exemple d'usage

Problème: le nom backup.domaine.net doit être valide pour l'iPasserelle et le serveur de sauvegardes. Il faut donc à la fois traiter les requêtes vers /.well-known/acme-challenge, et les renvoyer vers le backend. IL y a un réglage pour ça ;-)

db domains setprop backup.domaine.net ProxyPassACMEChallenges enabled
db domains setprop backup.domaine.net ProxyPassACMEChallengesDisableOnRenew enabled
signal-event letsencrypt-update

Avec ce réglage, en temps normal, les requêtes vers /.well-known/acme-challenge sont renvoyées vers le backend. Mais uniquement quand letsencrypt renouvelle ses certificats sur l'iPasserelle, elles sont traités en local