RousselTMLEARNING

Proxy & réseau

ACME : Le guide du déploiement SSL/TLS automatisé

Comprendre le protocole ACME, ses avantages et comment configurer le renouvellement automatique des certificats avec Traefik, HAProxy et Nginx.

ACME : Le guide du déploiement SSL/TLS automatisé

1. Qu'est-ce que le protocole ACME ? #

Le protocole ACME (RFC 8555) est un standard permettant d'automatiser les interactions entre une autorité de certification (CA) et les serveurs web.

Origine et Fonctionnement #

Développé par l'ISRG (Internet Security Research Group) pour le lancement de Let's Encrypt, ACME permet à un serveur de prouver qu'il contrôle un domaine afin d'obtenir un certificat sans intervention humaine. Cette preuve repose sur des 'défis' (challenges) :

  • HTTP-01 : Placer un fichier spécifique sur le serveur web.
  • DNS-01 : Créer un enregistrement TXT spécifique dans la zone DNS.

Les avantages majeurs #

  • Gratuité : La plupart des autorités ACME (Let's Encrypt, ZeroSSL) offrent des certificats gratuits.
  • Sécurité : Les certificats expirent tous les 90 jours, limitant l'impact en cas de compromission.
  • Fiabilité : L'automatisation élimine le risque d'oubli de renouvellement (première cause d'indisponibilité HTTPS).

2. Automatisation avec Traefik #

Traefik est le champion de l'ACME grâce à son support natif sans outil tiers.

Configuration (traefik.yml) #

Traefik gère lui-même le stockage et le renouvellement via des CertificatesResolvers :

certificatesResolvers:
  myresolver:
    acme:
      email: admin@votre-domaine.fr
      storage: acme.json
      httpChallenge:
        entryPoint: web # Port 80 obligatoire pour le défi

Ensuite, sur vos conteneurs, il suffit d'ajouter un label :
traefik.http.routers.monapp.tls.certresolver=myresolver

3. Automatisation avec HAProxy #

HAProxy nécessite généralement un client externe (Certbot ou acme.sh) pour gérer le challenge.

Intégration avec Certbot #

La méthode recommandée consiste à dédier un backend au challenge ACME pour ne pas couper le trafic :

frontend http-in
    bind *:80
    acl is_acme path_beg /.well-known/acme-challenge/
    use_backend acme_backend if is_acme

backend acme_backend
    server certbot 127.0.0.1:8888

Le renouvellement se fait via un script qui concatène le certificat et la clé privée dans un fichier .pem, format attendu par HAProxy.

4. Automatisation avec Nginx #

Nginx utilise massivement Certbot via un plugin dédié qui automatise la lecture et l'écriture de la configuration.

Commande de mise en place #

Sur la plupart des systèmes Linux, une seule commande suffit pour transformer un site HTTP en HTTPS :

sudo certbot --nginx -d mon-domaine.fr

Certbot va alors :

  1. Modifier votre nginx.conf pour ajouter les blocs SSL.
  2. Gérer le challenge HTTP-01.
  3. Installer une tâche Cron pour renouveler le certificat automatiquement tous les 60 jours.

Conclusion #

Quel outil choisir ? #

Si vous travaillez dans un environnement cloud/conteneurs, Traefik offre l'expérience la plus fluide. Pour des infrastructures traditionnelles plus statiques, le couple Nginx + Certbot reste la référence mondiale par sa simplicité.

Pour aller plus loin