ACME (Automated Certificate Management Environment) est le protocole qui rend possibles les certificats SSL gratuits et automatises. C’est la maniere dont Let’s Encrypt — et votre client ACME (GetHTTPS, Certbot, acme.sh) — communique reellement avec l’Autorite de Certification.
Defini dans le RFC 8555, ACME a remplace l’ancien processus manuel (envoyer des CSR par e-mail a une CA, attendre une verification humaine) par un protocole entierement automatise et cryptographiquement securise.
Comment ACME fonctionne — les 5 etapes
┌──────────┐ ┌──────────────┐
│ Client │ ① Account Registration │ CA Server │
│ (GetHTTPS)│ ──────────────────────────→ │ (Let's Encrypt)
│ │ ② New Order (domains) │ │
│ │ ──────────────────────────→ │ │
│ │ ③ Complete Challenges │ │
│ │ ←─────────────────────────── │ │
│ │ ──────────────────────────→ │ │
│ │ ④ Finalize (send CSR) │ │
│ │ ──────────────────────────→ │ │
│ │ ⑤ Download Certificate │ │
│ │ ←─────────────────────────── │ │
└──────────┘ └──────────────┘
Etape 1 : Enregistrement du compte
Le client genere une paire de cles de compte ACME et enregistre la cle publique aupres de la CA. Cette cle vous identifie dans les requetes futures — chaque message ACME est signe avec elle.
Pas d’e-mail, pas de mot de passe, aucune information personnelle requise.
Etape 2 : Nouvelle commande
Le client soumet une liste de noms de domaine pour lesquels il souhaite un certificat. La CA cree une « commande » et renvoie un ensemble d’« autorisations » — une par domaine — chacune avec des challenges a completer.
Etape 3 : Completer les challenges
Pour chaque domaine, le client doit prouver qu’il en a le controle. La CA propose des types de challenges :
| Challenge | Fonctionnement | Cas d’utilisation |
|---|---|---|
| HTTP-01 | Placer un fichier dans /.well-known/acme-challenge/ | Le plus courant, le plus simple |
| DNS-01 | Ajouter un enregistrement TXT a _acme-challenge.domain | Wildcards, pas de port 80 |
| TLS-ALPN-01 | Repondre sur le port 443 avec un certificat TLS special | Quand le port 80 est bloque, pas d’acces DNS |
Le client complete la challenge, puis demande a la CA de verifier. La CA verifie depuis ses serveurs — si la challenge est reussie, l’autorisation est marquee comme valide.
Etape 4 : Finalisation (envoi du CSR)
Une fois tous les domaines autorises, le client envoie un CSR (Certificate Signing Request) contenant la cle publique pour le certificat. La CA le signe et cree le certificat.
Etape 5 : Telecharger le certificat
Le client telecharge la chaine de certificats signee — votre certificat + le certificat CA intermediaire. Termine.
Modele de securite ACME
Chaque requete ACME est signee avec JWS (JSON Web Signature) en utilisant la cle du compte. Cela previent :
- Les attaques par rejeu — chaque requete a un nonce unique
- La falsification — la signature couvre l’integralite du corps de la requete
- L’usurpation d’identite — seul le detenteur de la cle du compte peut effectuer des requetes
La cle du compte ne quitte jamais le client. Avec GetHTTPS, elle est generee dans votre navigateur via la Web Crypto API.
Comment GetHTTPS utilise ACME
GetHTTPS implemente le protocole ACME complet en JavaScript s’executant dans votre navigateur :
- Cle de compte generee avec
crypto.subtle.generateKey()(Web Crypto API) - Cle de certificat generee de la meme maniere
- Messages ACME signes avec
crypto.subtle.sign() - CSR construit avec la bibliotheque pkijs
- Communication HTTPS directe avec
acme-v02.api.letsencrypt.org
Pas de proxy cote serveur, pas de middleware. Votre navigateur communique directement avec l’API ACME de Let’s Encrypt. C’est unique — la plupart des clients ACME s’executent sur un serveur.
Comparaison des clients ACME
| Client | S’execute dans | ACME v2 | Renouvellement auto | Langage |
|---|---|---|---|---|
| GetHTTPS | Navigateur | ✅ | ❌ Manuel | JavaScript |
| Certbot | CLI serveur | ✅ | ✅ | Python |
| acme.sh | CLI serveur | ✅ | ✅ | Shell |
| Caddy | Serveur web | ✅ | ✅ | Go |
| Traefik | Reverse proxy | ✅ | ✅ | Go |
| Lego | Bibliotheque CLI | ✅ | ✅ | Go |
CAs qui prennent en charge ACME
ACME a ete cree par Let’s Encrypt mais est desormais un standard ouvert utilise par plusieurs CAs :
| CA | URL du repertoire ACME | Gratuit ? |
|---|---|---|
| Let’s Encrypt | acme-v02.api.letsencrypt.org/directory | ✅ |
| ZeroSSL | acme.zerossl.com/v2/DV90 | Gratuit limite |
| Buypass | api.buypass.com/acme/directory | ✅ |
| Google Trust Services | Via Google Cloud ACME | ✅ |
| DigiCert | Endpoint ACME Enterprise | Payant |
| Sectigo | Endpoint ACME Enterprise | Payant |
Questions frequemment posees
ACME est-il la meme chose que Let’s Encrypt ?
Non. ACME est le protocole (RFC 8555). Let’s Encrypt est une Autorite de Certification qui utilise ACME. D’autres CAs (ZeroSSL, Buypass, Google) prennent egalement en charge ACME. Pensez-y comme HTTP vs Google — HTTP est le protocole, Google est un service qui l’utilise.
Puis-je implementer mon propre client ACME ?
Oui. Le protocole est entierement specifie dans le RFC 8555. GetHTTPS est un exemple d’implementation basee sur le navigateur. Des bibliotheques existent pour la plupart des langages (certbot pour Python, lego pour Go, acme.js pour JavaScript).
Qu’est-ce qu’ACME v2 ?
ACME v2 est la version actuelle (RFC 8555), qui a ajoute la prise en charge des certificats wildcard et remplace le protocole provisoire v1. Tous les clients ACME modernes utilisent v2. Let’s Encrypt a ferme l’endpoint v1 en 2021.
Que se passe-t-il si le serveur ACME est en panne ?
Les certificats existants continuent de fonctionner (ils ne contactent pas le serveur). Vous ne pouvez simplement pas emettre ou renouveler de certificats tant que le serveur n’est pas retabli. Let’s Encrypt a une haute disponibilite et une infrastructure redondante.