Publié le
12 février 2024
Introduction
Le protocole ACME est un protocole réseau conçu pour automatiser la validation de domaine et la délivrance de certificats X.509. Le processus se déroule entre un serveur ACME et un client ACME.
Deux clients populaires sous Linux sont Certbot et acme.sh.
Certbot est un client ACME open source créé par l'Electronic Frontier Foundation (EFF), initialement conçu pour être utilisé conjointement avec leur propre service d'autorité de certification : Let's Encrypt.
Le second client, acme.sh, est un client écrit en langage Shell (Unix shell) sous licence GPLv3.
Vue d'ensemble
Certbot et acme.sh sont des clients ACME simples, en ligne de commande (CLI), pour Linux.
Certbot peut fonctionner sur tout système d'exploitation de type UNIX récent équipé de Python 2.7 ou 3.4+, tandis qu'acme.sh peut également s'exécuter sur n'importe quelle distribution Linux récente disposant de bash, dash ou sh.
Tous deux prennent pleinement en charge la dernière version du protocole ACMEv2, y compris sa principale nouvelle fonctionnalité : les certificats wildcard (\*.example.com).
Les deux clients prennent en charge différents modes pour obtenir un certificat et, dans certains cas, l'installer automatiquement.
Le tableau suivant liste les différents modes pour chaque client :
Mode | Certbot | Acme.sh | Notes |
apache | ✔️ | ✔️ | Obtient et installe automatiquement un certificat en utilisant le serveur Apache en cours d'exécution. (Pour acme.sh, ce mode obtiendra uniquement un certificat sans l'installer) |
nginx | ✔️ | ✔️ | Obtient et installe automatiquement un certificat en utilisant le serveur NGINX en cours d'exécution. (Pour acme.sh, ce mode obtiendra uniquement un certificat sans l'installer) |
webroot | ✔️ | ✔️ | Obtient un certificat en écrivant dans le répertoire webroot d'un serveur web déjà en cours d'exécution. |
standalone | ✔️ | ✔️ | Utilise un serveur web « standalone » géré par Certbot ou acme.sh. Ce mode est utile sur des systèmes sans serveur web ou lorsque l'on ne souhaite pas utiliser le serveur web en cours d'exécution. |
DNS | ✔️ | ✔️ | Ce mode automatise l'obtention d'un certificat en modifiant un enregistrement DNS pour prouver le contrôle d'un domaine. |
tls-alpn | ❌ | ✔️ | Utilise un serveur TLS pour valider le contrôle d'un domaine. |
Requête de certificat
Les deux clients doivent être exécutés avec des privilèges administratifs (sudo), sauf pour acme.sh lors de l'utilisation des modes webroot ou DNS.
Chaque client requiert seulement quelques paramètres pour demander par défaut un certificat à Let's Encrypt.
Par exemple, pour Certbot :
Paramètre | Description |
certonly | Obtenir ou renouveler un certificat, mais ne pas l'installer |
webroot | Place les fichiers dans le dossier webroot d'un serveur pour l'authentification |
-w [VALUE] | Chemin du dossier webroot du serveur |
-d [VALUE] | Le ou les domaines à enrôler. |
La commande serait :
certbot certonly --webroot -w /var/www/example -d www.example.com
Envie de mettre en pratique ces bonnes pratiques PKI ?
Bénéficiez des conseils de nos experts pour déployer des solutions PKI sécurisées au sein de votre organisation.
Demander de l'aideDe son côté, les paramètres pour acme.sh sont :
Paramètre | Description |
--issue | Obtenir ou renouveler un certificat, mais ne pas l'installer |
-d [VALUE] | Le ou les domaines à enrôler. |
-w [VALUE] | Chemin du dossier webroot du serveur |
La commande serait :
acme.sh --issue -d example.com -w /var/www/example
Il existe bien d'autres options sur les deux clients pour adapter les requêtes à des besoins spécifiques.
Pour plus d'informations, consultez les pages web officielles de Certbot et acme.sh : * [Certbot](https://certbot.eff.org/docs/using.html) * [acme.sh](https://github.com/Neilpang/acme.sh)
Cas d'usage
Par défaut, Certbot et acme.sh demanderont un certificat auprès de la CA Let's Encrypt, mais il existe plusieurs cas d'usage où l'on préférera demander un certificat auprès d'une autre CA.
Les exemples suivants décrivent comment utiliser certains des différents modes de Certbot et d'acme.sh pour demander ou révoquer un certificat auprès d'une autre CA.
Mode Apache
L'utilisation du mode Apache depuis Certbot et acme.sh consiste à demander un certificat, à valider le contrôle du domaine demandé en s'appuyant sur le serveur Apache en cours d'exécution, puis à installer le certificat sur le serveur (uniquement pour Certbot).
L'exemple suivant détaille la requête utilisée, ses paramètres et les résultats de la requête en utilisant le mode Apache avec Certbot.
Mode NGINX
L'utilisation du mode NGINX depuis Certbot et acme.sh consiste à demander un certificat, à valider le contrôle du domaine demandé en s'appuyant sur le serveur NGINX en cours d'exécution, puis à installer le certificat sur le serveur (uniquement pour Certbot).
Les exemples suivants détaillent les requêtes utilisées, les paramètres et les résultats des requêtes en utilisant le mode NGINX.
Mode standalone
L'utilisation du mode standalone depuis Certbot et acme.sh consiste à demander un certificat et à valider le contrôle du domaine demandé en s'appuyant sur un serveur web autonome exécuté par Certbot ou acme.sh.
Dans ce cas d'usage, le certificat est uniquement obtenu et n'est pas installé sur le serveur web en cours d'exécution. La configuration du serveur web doit être modifiée par la suite pour que le certificat soit utilisé.
Les exemples suivants détaillent les requêtes utilisées, les paramètres et les résultats des requêtes en utilisant le mode standalone.
Révocation
Les deux clients sont également capables de révoquer les certificats qu'ils gèrent en envoyant une requête de révocation avec le nom de domaine correct du certificat à révoquer.
Les exemples suivants détaillent les requêtes utilisées, les paramètres et les résultats des requêtes pour révoquer un certificat avec Certbot.