SSL Client · 7 min read · Feb 04, 2026

Commencer avec le client SSL Let's Encrypt acme.sh

Acme.sh est un client du protocole ACME simple, puissant et facile à utiliser, écrit uniquement en Shell (langage shell Unix), compatible avec les shells bash, dash et sh. Il aide à gérer l’installation, le renouvellement et la révocation des certificats SSL. Il prend en charge les protocoles ACME version 1 et version 2, ainsi que les certificats wildcard ACME v2. Étant un client ACME sans dépendances, cela le rend encore meilleur. Vous n’avez pas besoin de télécharger et d’installer tout Internet pour le faire fonctionner. L’outil ne nécessite pas d’accès root ou sudo, mais il est recommandé d’utiliser root.

Acme.sh prend en charge les méthodes de validation suivantes que vous pouvez utiliser pour confirmer la propriété du domaine :

  • Mode Webroot
  • Mode autonome
  • Mode autonome tls-alpn
  • Mode Apache
  • Mode Nginx
  • Mode DNS
  • Mode alias DNS
  • Mode sans état

Qu’est-ce que Let’s Encrypt

Let’s Encrypt (LE) est une autorité de certification (CA) qui propose des certificats SSL/TLS gratuits et automatisés, dans le but de crypter l’ensemble du web. Si vous possédez un nom de domaine et avez un accès shell à votre serveur, vous pouvez utiliser Let’s Encrypt pour obtenir un certificat de confiance sans frais. Let’s Encrypt peut émettre des certificats SAN pour jusqu’à 100 noms d’hôtes ** et des certificats wildcard. Tous les certificats sont valides pour une période de 90 jours.

Utilisation d’Acme.sh et commandes de base

Dans cette section, je vais montrer certaines des commandes et options les plus courantes d’acme.sh.

Installation d’Acme.sh

Vous avez quelques options pour installer acme.sh.

Installer depuis le web via curl ou wget :

curl https://get.acme.sh | sh  
source ~/.bashrc

ou

wget -O - https://get.acme.sh | sh  
source ~/.bashrc

Installer depuis GitHub :

curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

ou

wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 sh

Cloner Git et installer :

git clone https://github.com/Neilpang/acme.sh.git  
cd ./acme.sh  
./acme.sh --install  
source ~/.bashrc

L’installateur effectuera 3 actions :

  1. Créer et copier acme.sh dans votre répertoire personnel ( $HOME) : ~/.acme.sh/. Tous les certificats seront également placés dans ce dossier.
  2. Créer un alias pour : acme.sh=~/.acme.sh/acme.sh.
  3. Créer un travail cron quotidien pour vérifier et renouveler les certificats si nécessaire.

Installation avancée :

git clone https://github.com/Neilpang/acme.sh.git  
cd acme.sh  
./acme.sh --install \  
          --home ~/myacme \  
          --config-home ~/myacme/data \  
          --cert-home ~/mycerts \  
          --accountemail "[email protected]" \  
          --accountkey ~/myaccount.key \  
          --accountconf ~/myaccount.conf \  
          --useragent "c'est mon client."

Vous n’avez pas besoin de définir toutes les options, définissez simplement celles qui vous intéressent.

Options expliquées :

  • --home est un répertoire personnalisé pour installer acme.sh. Par défaut, il s’installe dans ~/.acme.sh.
  • --config-home est un dossier écrivable, acme.sh y écrira tous les fichiers (y compris certs/clés, configurations). Par défaut, il est dans --home.
  • --cert-home est un répertoire personnalisé pour enregistrer les certificats que vous émettez. Par défaut, il est enregistré dans --config-home.
  • --accountemail est l’email utilisé pour enregistrer le compte auprès de Let’s Encrypt, vous recevrez ici un email de notification de renouvellement. Par défaut, il est vide.
  • --accountkey est le fichier sauvegardant votre clé privée de compte. Par défaut, il est sauvegardé dans --config-home.
  • --useragent est la valeur de l’en-tête user-agent utilisée pour envoyer à Let’s Encrypt.

Après l’installation, vous pouvez vérifier en vérifiant la version d’acme.sh :

acme.sh --version  
# v2.8.1

Le programme a beaucoup de commandes et de paramètres qui peuvent être utilisés. Pour obtenir de l’aide, vous pouvez exécuter :

acme.sh --help

Émettre un certificat SSL

Si vous avez déjà un serveur web en cours d’exécution, vous devriez utiliser le mode webroot. Vous aurez besoin d’un accès en écriture au dossier racine web. Voici quelques commandes d’exemple qui peuvent être utilisées pour obtenir un certificat via le mode webroot :

Domaine unique + Mode Webroot :

acme.sh --issue -d example.com --webroot /var/www/example.com  

Plusieurs domaines dans le même certificat + Mode Webroot :

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com

Certificat ECC/ECDSA pour un domaine unique + Mode Webroot :

acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256

Plusieurs domaines dans le même certificat ECC/ECDSA + Mode Webroot :

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --webroot /var/www/example.com --keylength ec-256

Les valeurs valides pour --keylength sont : 2048 (par défaut), 3072, 4096, 8192 ou ec-256, ec-384.

Si vous n’avez pas de serveur web, peut-être êtes-vous sur un serveur SMTP ou FTP, le port 80 est libre, alors vous pouvez utiliser le mode autonome. Si vous souhaitez utiliser ce mode, vous devrez d’abord installer les outils socat.

Domaine unique + Mode autonome :

acme.sh --issue -d example.com --standalone  

Plusieurs domaines dans le même certificat + Mode autonome :

acme.sh --issue -d example.com -d www.example.com -d mail.example.com --standalone  

Si vous n’avez pas de serveur web, peut-être êtes-vous sur un serveur SMTP ou FTP, le port 443 est libre. Vous pouvez utiliser le mode autonome TLS ALPN. Acme.sh a un serveur web TLS autonome intégré, il peut écouter sur le port 443 pour émettre le certificat.

Domaine unique + Mode autonome TLS ALPN :

acme.sh --issue -d example.com --alpn

Plusieurs domaines dans le même certificat + Mode autonome TLS ALPN :

acme.sh --issue -d example.com -d www.example.com --alpn

Intégration automatique de l’API DNS

Si votre fournisseur DNS a une API, acme.sh peut utiliser l’API pour ajouter automatiquement l’enregistrement DNS TXT pour vous. Votre certificat sera automatiquement émis et renouvelé. Aucun travail manuel n’est requis. Avant de demander les certificats, configurez vos clés API et votre email. Actuellement, acme.sh a une intégration DNS automatique avec environ 60 fournisseurs DNS nativement et peut utiliser l’outil Lexicon pour ceux qui ne sont pas pris en charge nativement.

Domaine unique + Mode API DNS CloudFlare :

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"  
export CF_Email="[email protected]"  
acme.sh --issue -d example.com --dns dns_cf  

Certificat wildcard + Mode API DNS CloudFlare :

export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"  
export CF_Email="[email protected]"  
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf

Si votre fournisseur DNS ne prend pas en charge l’accès API, vous pouvez ajouter l’enregistrement TXT manuellement.

acme.sh --issue --dns -d example.com -d www.example.com -d cp.example.com  

Vous devriez obtenir une sortie comme ci-dessous :

Ajoutez le fichier txt suivant :
Domaine :_acme-challenge.example.com
Valeur Txt :9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Ajoutez le fichier txt suivant :
Domaine :_acme-challenge.www.example.com
Valeur Txt :9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Veuillez ajouter ces enregistrements txt aux domaines. En attente de l'effet DNS.

Ensuite, il suffit de relancer avec l’argument renew :

acme.sh --renew -d example.com

Gardez à l’esprit qu’il s’agit du mode manuel DNS et que vous ne pouvez pas renouveler automatiquement vos certificats. Vous devrez ajouter un nouvel enregistrement TXT à votre domaine manuellement lorsque le moment sera venu de renouveler les certificats. Utilisez donc plutôt le mode API DNS, car il peut être automatisé.

Installer le certificat SSL Let’s Encrypt

Après que les certificats aient été générés, vous voudrez probablement installer/copier les certificats émis à l’emplacement correct sur le disque. Vous devez utiliser cette commande pour copier les certificats dans les fichiers cibles, ne pas utiliser les fichiers de certificats dans le dossier ~/.acme.sh/, ils sont réservés à un usage interne, la structure des dossiers peut changer à l’avenir. Avant l’installation, créez un répertoire sensé pour stocker vos certificats. Cela peut être /etc/letsencrypt, /etc/nginx/ssl ou /etc/apache2/ssl par exemple, selon votre logiciel de serveur web et vos propres préférences pour stocker les éléments liés au SSL.

Exemple Apache :

acme.sh --install-cert \  
        --domain example.com \   
        --cert-file /path/to/cert/cert.pem \  
        --key-file /path/to/keyfile/key.pem \  
        --fullchain-file /path/to/fullchain/fullchain.pem \  
        --reloadcmd "sudo systemctl reload apache2.service"

Exemple Nginx :

acme.sh --install-cert \  
        --domain example.com \   
        --cert-file /path/to/cert/cert.pem \  
        --key-file /path/to/keyfile/key.pem \  
        --fullchain-file /path/to/fullchain/fullchain.pem \  
        --reloadcmd "sudo systemctl reload nginx.service"

Les paramètres sont stockés dans le fichier de configuration .acme.sh, donc vous devez les obtenir correctement pour votre système car ce fichier est lu lorsque le travail cron exécute le renouvellement. “reloadcmd” dépend de votre système d’exploitation et de votre système d’initialisation.

Renouveler les certificats SSL Let’s Encrypt

Vous n’avez pas besoin de renouveler les certificats manuellement. Tous les certificats seront renouvelés automatiquement tous les 60 jours.

Cependant, vous pouvez également forcer le renouvellement d’un certificat :

acme.sh --renew -d example.com --force

ou, pour un certificat ECC :

acme.sh --renew -d example.com --force --ecc

Comment mettre à jour acme.sh

Vous pouvez mettre à jour acme.sh vers le dernier code avec :

acme.sh --upgrade

Vous pouvez également activer la mise à jour automatique :

acme.sh --upgrade --auto-upgrade

Alors acme.sh sera maintenu à jour automatiquement.

C’est tout. Si vous rencontrez des problèmes, visitez la page wiki d’acme.sh à https://github.com/Neilpang/acme.sh/wiki.

Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.