GNU/Linux >> Tutoriels Linux >  >> Linux

Premiers pas avec le client SSL Lets Encrypt d'acme.sh

Acme.sh est un client de protocole ACME simple, puissant et facile à utiliser, écrit uniquement en langage Shell (shell Unix), compatible avec les shells bash, dash et sh. Il permet de gérer l'installation, le renouvellement et la révocation des certificats SSL. Il prend en charge les protocoles ACME version 1 et ACME version 2, ainsi que les certificats génériques ACME v2. Être un client ACME sans dépendances le rend encore meilleur. Vous n'avez pas besoin de télécharger et d'installer l'intégralité d'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 est compatible avec les méthodes de validation suivantes que vous pouvez utiliser pour confirmer la propriété du domaine :

  • Mode racine Web
  • Mode autonome
  • Mode tls-alpn autonome
  • 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 chiffrer l'ensemble du Web. Si vous possédez un nom de domaine et que vous 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ôte  et les certificats génériques. 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 acme.sh les plus courantes.

Installation Acme.sh

Vous avez plusieurs 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 et installer Git :

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

Le programme d'installation 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 une tâche cron quotidienne 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 "this is my 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 in. Par défaut, il s'installe dans ~/.acme.sh.
  • --config-home est un dossier inscriptible, acme.sh y écrira tous les fichiers (y compris cert/keys, configs). Par défaut, c'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'e-mail utilisé pour enregistrer le compte sur Let's Encrypt, vous recevrez un e-mail d'avis de renouvellement ici. La valeur par défaut est vide.
  • --accountkey est le fichier qui enregistre la clé privée de votre compte. Par défaut, il est enregistré dans --config-home .
  • --useragent est la valeur d'en-tête de l'agent utilisateur utilisée pour envoyer à Let's Encrypt.

Une fois l'installation terminée, vous pouvez la vérifier en vérifiant acme.sh version :

acme.sh --version
# v2.8.1

Le programme comporte de nombreuses commandes et paramètres pouvant ê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 devez utiliser le mode webroot . Vous aurez besoin d'un accès en écriture au dossier racine Web. Voici quelques exemples de commandes pouvant ê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 à 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

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 devez 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, vous êtes peut-être sur un serveur SMTP ou FTP, le port 443 est libre. Vous pouvez utiliser le mode TLS ALPN autonome. Acme.sh dispose d'un serveur Web TLS autonome intégré, il peut écouter sur le port 443 pour émettre le certificat.

Domaine unique + mode ALPN TLS autonome :

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

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

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

Intégration automatique de l'API DNS

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

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 générique + 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 en charge aucun accès à l'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 :

Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c

Add the following txt record:
Domain:_acme-challenge.www.example.com
Txt value:9ihDbjxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Please add those txt records to the domains. Waiting for the dns to take effect.

Ensuite, réexécutez simplement avec renew argument :

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 manuellement un nouvel enregistrement TXT à votre domaine lorsqu'il sera temps de renouveler les certificats. Utilisez plutôt le mode API DNS, car il peut être automatisé.

Installer Let's encrypt SSL cert

Une fois les certificats générés, vous souhaiterez probablement installer/copier les certificats émis au bon emplacement sur le disque. Vous devez utiliser cette commande pour copier les certificats dans les fichiers cibles, n'utilisez pas les fichiers de certificats dans ~/.acme.sh/ dossier, ils sont destinés à un usage interne uniquement, la structure du dossier peut changer à l'avenir. Avant l'installation, créez un répertoire sensible pour stocker vos certificats. Cela peut être /etc/letsencrypt , /etc/nginx/ssl  ou /etc/apache2/ssl par exemple, en fonction de votre logiciel de serveur Web et de vos propres préférences pour stocker des éléments liés à SSL.

Apache exemple :

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"

Nginx exemple :

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, vous devez donc l'adapter à votre système car ce fichier est lu lorsque la tâche 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 le certificat ECC :

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

Comment mettre à jour acme.sh

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

acme.sh --upgrade

Vous pouvez également activer la mise à jour automatique :

acme.sh --upgrade --auto-upgrade

Ensuite, acme.sh sera mis à jour automatiquement.

C'est ça. Si vous êtes bloqué sur quoi que ce soit, visitez la page wiki acme.sh à https://github.com/Neilpang/acme.sh/wiki.

  • https://github.com/Neilpang/acme.sh
  • https://letsencrypt.org/

Linux
  1. Premiers pas avec Zsh

  2. Premiers pas avec Lets Encrypt SSL Certificates sur Ubuntu

  3. Comment gérer les certificats Lets Encrypt SSL/TLS avec certbot

  4. Sécuriser ISPConfig 3.1 avec un certificat SSL Lets Encrypt gratuit

  5. Démarrer avec ls

Premiers pas avec LibreCAD

Réflexions sur SSL intermédiaire compatible avec les certificats Lets Encrypt

Comment installer WonderCMS avec Nginx et Lets Encrypt SSL sur CentOS 7

Premiers pas avec GIT sous Linux

Premiers pas avec le système d'exploitation Linux

Premiers pas avec systemctl