Let’s Encrypt : est-ce viable et sérieux dans un contexte pro ?

Aujourd’hui, Let’s Encrypt a beau exister depuis déjà quelques années, il jouit encore d’une mauvaise réputation en France.

N’étant pas en accord avec cette "perception" pas toujours justifiée, j’ai décidé de partager mon retour d’expérience sur ce service.

Mes usages

J’utilisé Let’s Encrypt depuis ses débuts, ce qui fait que j’ai vu évoluer le produit et l’ai utilisé dans plusieurs contextes :

  • Sites web hébergés via IIS.
  • Sites web hébergés via Azure.
  • Sites web hébergés via Docker.
  • Remote Desktop Services.

Avec des certificats à usage unique (un seul nom DNS) et des wildcards.

Certains l’utilisent aussi pour des serveurs VPN, mais je n’ai jamais testé.

Les options de vérification de la propriété du nom de domaine

Let’s Encrypt offre deux possibilités pour prouver que vous êtes le propriétaire du service que vous souhaitez héberger :

  • Exposer un Endpoint qui va contenir un message défini par Let’s Encrypt.
  • Exposer un champ TXT via un serveur DNS (celui de votre fournisseur de noms de domaines).

L’objectif est d’empêcher qu’une personne fasse l’acquisition d’un certificat sans pocéder le nom de domaine et/ou le service qui va utiliser le certificat.

J’ai beaucoup utilisé la première option, car il s’agissait de la seule possibilité offerte par le service à son lancement. Je privilégie la seconde option depuis qu’elle est disponible, car je préfère ne pas avoir besoin d’ouvrir un serveur web en HTTP juste pour cet usage (principalement pour des raisons de sécurité : ne pas exposer continuellement un service qui n’a pas utilité d’être ouvert).

Les options d’obtention / renouvellement des certificats

Let’s Encrypt limite volontairement la durée de validité de ses certificats à 3 mois. Il faut donc mettre en place une solution pour automatiser le renouvellement et l’installation des certificats.

Pour cela, j’ai testé plusieurs client Let’s Encrypt et en ai retenu deux :

  • Posh-ACME : est un module Powershell qui permet d’obtenir des certificats et de les renouveler. Il fonctionne aussi avec Powershell Core. On peut donc l’utiliser sur Linux, Mac et Windows. Il peut être utilisé avec un très large panel de fournisseurs de noms de domaines. On peut créer son propre script, le résultat est toujours reproductible, fiable et on a la main sur la manière d’installer les certificats (parfait pour du DevOps). La vérification de la propriété du nom de domaine se fait via DNS.
  • AppService certificate automation tool (projet GitHub): est une solution pour Azure qui permet d’obtenir des certificats et de les renouveler. Lors de son installation, la solution déploie un ensemble de ressources (Azure Function App, Application Insights, Storage… on sait connait donc précisément les ressources utiles au service). Une seule instance peut piloter plusieurs de vos services qui nécessitent des certificats et peut gérer plusieurs certificats pour un même service. La vérification de la propriété du nom de domaine se fait via un Endpoint HTTPS.

Ces deux clients Let’s Encrypt me permettent de couvrir l’ensemble de mes besoins. Que ce soit sur Windows, Mac, ou Linux dans le cloud ou on premise.

Quelle que soit l’approche choisie, on peut toujours fournir un email afin d’être informé par Let’s Encrypt des certificats proches de l’échéance. Message que je n’ai jamais reçu, car mes certificats se sont toujours renouvelés automatiquement.

Quelques problèmes à signaler ?

Aucun, Let’s Encrypt ne m’a jamais fait faux bon. Aucun certificat Let’s Encrypt ne m’a jamais été refusé par un client (navigateur web ou client RDP). Et contrairement à d’autres fournisseurs de certificats, les autorités de certificats de Let’s Encrypt n’ont jamais été black listés par Microsoft, Apple, Mozilla ou Google.

La révocation de certificats et possible et les clients sont en mesure de vérifier auprès des autorités de Let’s Encrypt si un ceritificat a été révoqué ou non (ce que nombre de fournisseurs ne gèrent pas). En cas de perte d’un certificat ou d’un problème de sécurité, vous être donc certain que personne ne peut plus l’utiliser.

Conclusion

Oui, on peut utiliser Let’s Encrypt dans un contexte pro. Oui, cet usage et sérieux et n’a rien d’artisanal. Et en plus, on peut l’utiliser dans une démarche DevOps. En somme : que du bon !

Aujourd’hui, l’usage de Let’s Encrypt est devenu tellement simple, que je ne demande plus de certificats wildcard. Je préfère mettre en place des scripts pour chaque service nécessitant un certificat.

Jérémy Jeanson

Comments

You have to be logged in to comment this post.