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 ~/.bashrcou
wget -O - https://get.acme.sh | sh
source ~/.bashrcInstaller depuis GitHub :
curl https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shou
wget -O - https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1 shCloner Git et installer :
git clone https://github.com/Neilpang/acme.sh.git
cd ./acme.sh
./acme.sh --install
source ~/.bashrcL’installateur effectuera 3 actions :
- Créer et copier
acme.shdans votre répertoire personnel ($HOME) :~/.acme.sh/. Tous les certificats seront également placés dans ce dossier. - Créer un alias pour :
acme.sh=~/.acme.sh/acme.sh. - 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 :
--homeest un répertoire personnalisé pour installeracme.sh. Par défaut, il s’installe dans~/.acme.sh.--config-homeest un dossier écrivable, acme.sh y écrira tous les fichiers (y compris certs/clés, configurations). Par défaut, il est dans--home.--cert-homeest un répertoire personnalisé pour enregistrer les certificats que vous émettez. Par défaut, il est enregistré dans--config-home.--accountemailest 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.--accountkeyest le fichier sauvegardant votre clé privée de compte. Par défaut, il est sauvegardé dans--config-home.--useragentest 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.1Le 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.comCertificat ECC/ECDSA pour un domaine unique + Mode Webroot :
acme.sh --issue -d example.com --webroot /var/www/example.com --keylength ec-256Plusieurs 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-256Les 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 --alpnPlusieurs domaines dans le même certificat + Mode autonome TLS ALPN :
acme.sh --issue -d example.com -d www.example.com --alpnInté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_cfSi 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.comGardez à 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 --forceou, pour un certificat ECC :
acme.sh --renew -d example.com --force --eccComment mettre à jour acme.sh
Vous pouvez mettre à jour acme.sh vers le dernier code avec :
acme.sh --upgradeVous pouvez également activer la mise à jour automatique :
acme.sh --upgrade --auto-upgradeAlors 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
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.