Comment demander un certificat LetsEncrypt en utilisant Acme

Contenu

Chiffrons

LetsEncrypt a changé le monde des certificats SSL lorsque son offre de certificats SSL gratuits et de courte durée a permis à un grand nombre de personnes et d'entreprises de protéger leurs applications Web sans frais.. Avec ce service, l'infrastructure nécessaire doit exister et, à cette fin, un grand nombre d'applications ont émergé qui répondent aux besoins d'émission SSL.

L'un des utilitaires les plus courants est celui de CertBot, ça peut bien marcher, mais une autre application open source qui est activée est acme.sh. Ceci est un client ACME (le protocole utilisé par LetsEncrypt pour émettre des certificats SSL) absolument basé sur le shell. Avec une multitude de fonctionnalités avancées intégrées, ce client permet des configurations complexes.

La façon la plus simple d'installer [acme.sh](<http://acme.sh>) est le suivant, qui télécharge et exécute le script à partir d'ici, https://raw.githubusercontent.com/acmesh-official/acme.sh/master/acme.sh.

curl <https://get.acme.sh> | sh

La source de ce site se trouve ici, si vous voulez vérifier ce que fait le script réel

L'installation téléchargera et déplacera les fichiers vers ~/.acme.shet installez un alias dans votre ~/.bashrc Record. En même temps, une tâche cron sera installée si elle est activée.

Installation de Acme.shc

Premiers pas

Une grande partie de la façon dont vous l'utilisez [acme.sh](<http://acme.sh>) dépend de la méthode et de l'application pour laquelle vous demandez le certificat. Acme.sh offre de nombreuses méthodes différentes pour demander un certificat, Quoi:

Dans ce billet, Je vais démontrer deux façons différentes de demander un certificat. J'inclus les configurations de serveur Web pour NGINX et Apache, qui utilise la méthode Webroot. La méthode du mode DNS utilise un fichier de configuration pour créer des enregistrements CNAME qui sont utilisés pour vérifier le domaine, au lieu de créer un fichier sur le système de fichiers.

Paramétrage du serveur Web

Configuration de NGINX LetsEncrypt

NGINX facilite la création d'une configuration partagée à utiliser lors de l'utilisation du webroot méthode de demande de certificat.

letsencrypt.conf

Il est recommandé de créer une configuration distincte qui peut être incluse selon les besoins dans les configurations vhost, Donc: include /etc/nginx/letsencrypt.conf

# Rule for legitimate ACME Challenge requests (like /.well-known/acme-challenge/xxxxxxxxx)
# We use ^~ here, so that we don't check other regexes (for speed-up). We actually MUST cancel
# other regex checks, because in our other config files have regex rule that denies access to files with dotted names.
location ^~ /.well-known/acme-challenge/ {
    # Set correct content type. According to this:
    # <https://community.letsencrypt.org/t/using-the-webroot-domain-verification-method/1445/29>
    # Current specification requires "text/plain" or no content header at all.
    # It seems that "text/plain" is a safe option.
   default_type "text/plain";
}

# Direct access returns a 404
location = /.well-known/acme-challenge/ {
   return 404;
}

apache

De la même manière que NGINX, Apache peut créer un fichier de configuration séparé. Ci-dessous un exemple de cette configuration.

/etc/apache2/conf-available/letsencrypt.conf

Pour ce cas, La configuration Apache est spécifique à l'hôte virtuel en raison de la nécessité d'inclure l'emplacement du disque. Le suivant est un emplacement commun, mais cela peut différer en fonction de votre configuration spécifique.

Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"
<Directory "/var/www/html/">
    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

Configuration DNS

Dans ce billet, Je fais la démonstration du mode DNS à l'aide de Cloudflare, car il offre des changements DNS extrêmement rapides et fonctionne exceptionnellement bien avec cette méthode.

Acme.sh utilise deux variables environnementales pour le dns_cf méthode: CF_Key et CF_Email. Pour l'inclure dans votre environnement au démarrage, vous pouvez inclure cette configuration dans votre .bashrc Record.

Ce n'est peut-être pas évident, mais il y a un espace avant chaque commande d'export, qui garantit généralement qu'ils ne seront pas lus dans l'histoire, au cas où.

 export CF_Key="#########..."
 export CF_Email="[email protected]"

Émettre un certificat via la méthode Webroot

En lançant la commande suivante, deux domaines sont définis dans un seul certificat. Cela permet de s'assurer que lorsque l'un des noms d'hôte est demandé (et est souvent redirigé vers canonique), la demande restera protégée par une connexion sécurisée.

acme.sh --issue -d example.com -d www.example.com -w /var/www/html

Les certificats délivrés sont en /.acme.sh/acme.sh/{domain_name}

Émettre un certificat via la méthode DNS

Lors de l'utilisation de la méthode de diffusion DNS, un txt L'enregistrement est créé via l'API Cloudflare et LetsEncrypt vérifie le domaine à l'aide de cet enregistrement temporaire. C'est une méthode plus propre, puisque non webroot configuration nécessaire.

# Multiple Domains
acme.sh --issue --dns dns_cf -d example.com -d www.example.com

Les certificats délivrés sont en /.acme.sh/acme.sh/{domain_name}

Certificat renouvelable

Par défaut, Acme.sh, va créer un cronjob comme la prochaine entrée:

48 0 * * * "/home/user/.acme.sh/acme.sh" --cron --home "/home/user/.acme.sh" > /dev/null

Pour forcer un renouvellement, vous pouvez lancer la commande suivante, qui utilisera la même méthode d'émission que celle utilisée à l'origine:

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

Supprimer des certificats

Si vous ne souhaitez plus renouveler un certificat, il est très facile à enlever. Malgré cela, cela ne supprime pas le certificat du disque. Pour faire ça, vous devez naviguer vers ~/.acme.sh/ et supprimez le répertoire contenant les certificats.

acme.sh --remove -d example.com -d www.example.com

Cela permet de nettoyer les certificats configurés pour le renouvellement, que vous pouvez vérifier en listant les certificats comme suit:

acme.sh --list

conclusion

LetsEncrypt offre un service excellent et facile à utiliser pour la fourniture de certificats SSL à utiliser sur des sites Web.. La création d'un portail Web sécurisé est plus facile que jamais et en utilisant le acme.sh client signifie que vous avez un contrôle total sur la façon dont cela se produit sur votre serveur Web.

Avec pas mal de méthodes différentes pour obtenir un certificat, y compris des méthodes très sûres, en tant que domaine délégué, permettre de récupérer correctement les certificats nécessaires.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.