Publié le
11 février 2024
Introduction
Le protocole ACME est un protocole réseau conçu pour automatiser le processus de validation de domaine et la délivrance de certificats X.509. Le processus est mis en place entre un serveur ACME et un client ACME.
Deux clients populaires sur Linux sont Certbot et acme.sh.
Certbot est un client ACME open source créé par l'Electronic Frontier Foundation (EFF) à l'origine pour être utilisé en coordination avec son propre service d'autorité de certification : Let's Encrypt.
Le deuxième client, acme.sh, est un client écrit en langage Shell (shell Unix) sous licence GPLv3.
Vue d'ensemble
Certbot et acme.sh sont des clients ACME simples basés sur CLI pour Linux.
Certbot peut s'exécuter 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 fonctionner sur toute distribution Linux récente exécutant soit bash, dash ou sh.
Ils prennent tous deux en charge pleinement la dernière ACMEv2 protocole incluant sa principale fonctionnalité récente : certificats génériques (\\*.example.com).
Les deux clients prennent en charge différents modes d’obtention d’un certificat et, dans certains cas, l’installent automatiquement.
Le tableau suivant répertorie les différents modes pour chaque client:
| Mode | Cert bot | 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 ne fait qu'obtenir 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 ne fait qu'obtenir 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. |
| autonome | ✔️ | ✔️ | Utilise un serveur web "standalone" géré par Certbot ou acme.sh. Ce mode est utile sur un système sans serveurs web ou si l'utilisation du serveur web en cours n'est pas souhaitée. |
| 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. |
Demande de certificat
Les deux clients doivent être exécutés avec des privilèges administratifs (sudo), sauf pour acme.sh lorsqu'il utilise le webroot ou DNS modes.
Chaque client ne nécessite que quelques paramètres pour demander un certificat par défaut à Let's Encrypt.
Vous souhaitez mettre en œuvre ces pratiques PKI ?
Obtenez des conseils d'experts pour mettre en œuvre des solutions PKI sécurisées pour votre organisation.
Obtenir de l'aide d'expertPar exemple pour Certbot :
| Paramètre | Description |
|---|---|
| certonly | Obtenir ou renouveler un certificat, mais ne pas l'installer |
| webroot | Placer les fichiers dans le répertoire webroot d'un serveur pour l'authentification |
| -w [VALUE] | Chemin du dossier webroot du serveur' |
| -d [VALUE] | Le(s) domaine(s) à inscrire. |
La commande serait : certbot certonly --webroot -w /var/www/example -d www.example.com
En revanche, les paramètres pour acme.sh sont :
| Paramètre | Description |
|---|---|
| --issue | Obtenir ou renouveler un certificat, mais ne pas l'installer |
| -d [VALUE] | Le(s) domaine(s) à inscrire. |
| -w [VALUE] | Chemin du dossier webroot du serveur' |
La commande serait : acme.sh --issue -d example.com -w /var/www/example
Il existe de nombreuses autres options sur les deux clients pour personnaliser les requêtes selon des besoins spécifiques.
Pour plus d’informations, consultez la page officielle de Certbot et acme.sh : * [Certbot](https://certbot.eff.org/docs/using.html) * [acme.sh](https://github.com/Neilpang/acme.sh)
Cas d’utilisation
Par défaut, Certbot et acme.sh demanderont un certificat en utilisant le CA Let's Encrypt, mais il existe plusieurs cas d’utilisation où l’on préférerait demander un certificat auprès d’un autre CA.
Les exemples suivants décriront comment utiliser certains des différents modes de Certbot et acme.sh pour demander ou révoquer un certificat auprès d’une autre autorité de certification.
Mode Apache
Utiliser le mode Apache de Certbot et acme.sh demandera un certificat, validera le contrôle du domaine demandé en utilisant le serveur Apache en cours d'exécution, puis installera 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 utilisant le mode Apache avec Certbot.
Mode NGINX
L'utilisation du mode NGINX de Certbot et acme.sh demandera un certificat, validera le contrôle du domaine demandé en utilisant le serveur NGINX en cours d'exécution, puis installera 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 utilisant le mode NGINX.
Mode autonome
L'utilisation du mode autonome de Certbot et acme.sh demandera un certificat, validera le contrôle du domaine demandé en utilisant un serveur web autonome exécuté par Certbot ou acme.sh.
Dans ce cas d’utilisation, 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 utilisant le mode autonome.
Révocation
Les deux clients peuvent également révoquer les certificats qu'ils gèrent en envoyant une demande 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 à l'aide de Certbot.