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éfiEnsuite, 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:8888Le 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.frCertbot va alors :
- Modifier votre
nginx.confpour ajouter les blocs SSL. - Gérer le challenge HTTP-01.
- 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é.