Ajouter un commentaire

Étude déploiement et utilisation des certificats Let’s Encrypt

Ikoula a travaillé sur l’utilisation de la solution Let’s encrypt dans un contexte bien précis pour un de nos clients :
Infrastructure HAProxy en haute disponibilité pouvant disposer de certificats SSL provenant d’un fournisseur de certificats (type Geotrust, Thawte, …) et de l’acquisition / renouvellement de SSL Let’s Encrypt.

En quelques mots, Let’s Encrypt est une solution permettant d’obtenir des certificats SSL gratuitement et disposant d’une durée de validité de 3 mois.
Afin de pouvoir obtenir un certificat, un des prérequis essentiels est que le domaine et/ou alias pointe au niveau DNS sur l’IP de la machine réalisant la demande d’acquisition.

lets_encrypt

Jusque-là, nous pouvons retrouver un grand nombre de tutoriaux et de scripts dans différents forums, sur la mise en place de serveurs avec HAProxy, Corosync, Pacemaker et des scripts Let’s Encrypt (maintenant appelé Certbot).

Point très important, nous travaillons sur une volumétrie de domaines élevée (on parle de plusieurs milliers de domaines pour un même client). Au vu de la volumétrie importante et pour des raisons de gestion moins lourdes, nous avons opté pour la création de certificats SSL de type SAN.
Nous avons également fait ce choix afin de ne pas être bloqués par Let’s Encrypt.
Il faut savoir qu’on ne peut pas créer plus de 500 enregistrements par IP et par tranche de 3h.

Autre point très important, nous ne maîtrisons pas la gestion des noms de domaines.
C’est-à-dire qu’un domaine peut expirer ou que de nouveaux domaines peuvent être rajoutés sans que nous le sachions .
Dans le cas où un domaine expire (pour les certificats SAN), si nous utilisons les scripts, comme nous pouvons le trouver sur internet, les renouvellements des certificats ne pourraient pas se faire.
Vu que Let’s Encrypt teste pour chaque domaine la présence d’un pointage DNS, si un domaine venait à ne plus fonctionner (voir ne plus répondre sur la bonne IP), alors le certificat SAN ne pourra être renouvelé.

En prenant en compte l’ensemble de ces paramètres, nous avons adapté le script certbot pour qu’il tienne compte de tout cela.

Nous nous retrouvons au final avec 3 scripts différents :

  • On va segmenter le fichier contenant les X domaines en plusieurs petits fichiers de 50 domaines. Ceci pour une raison très simple, un certificat SAN dispose au maximum de 100 enregistrements (domaines et alias). Une fois segmenté, nous allons réaliser un test dig pour chaque domaine afin de vérifier que tous répondent bien sur l’IP de notre infrastructure et nous rajoutons / testons l’alias WWW dans ce test dig. Selon si les domaines et alias répondent bien sur l’IP de notre infrastructure ou non, alors nous obtiendrons 2 fichiers différents. Un fichier contenant l’ensemble des domaines / alias répondant à la bonne IP et un second fichier avec ceux ne répondant pas correctement.
  • Une fois que nous sommes sûrs que notre liste de domaine est bonne, nous allons générer les fichiers de configuration Let’s Encrypt. Ces fichiers de configurations contiendront les informations de type : adresse e-mail, l’acceptation des termes, la liste des domaines qu’il devra générer, etc.
  • Le dernier script va procéder à l’acquisition des certificats en se basant sur les fichiers de configurations générés. Ce même script réalise en amont une sauvegarde des configurations, validation de la nouvelle configuration et envoi d'e-mails de notifications.


Enfin, il suffit de créer une tache planifiée s’exécutant une fois par mois, pour le renouvellement des certificats SSL.

Depuis que nous avons créé ces scripts dans une infrastructure HAProxy, nous avons pu les réutiliser très aisément dans nos environnements, fonctionnant sous des technologies comme Apache et Nginx.

Vous pourrez retrouver nos scripts dans notre repository GIT : https://github.com/ikoula/letsencrypt-cerbot-haproxy-mass-domains.