Agence web » Actualités du digital » Comment demander un certificat LetsEncrypt à l'aide d'Acme

Comment demander un certificat LetsEncrypt à l'aide d'Acme

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 particuliers et d'entreprises de sécuriser leurs applications Web sans frais. Avec ce service, l'infrastructure nécessaire devrait exister et, à cette fin, une pléthore d'applications ont vu le jour qui répondent aux besoins de délivrance de SSL.

L'un des utilitaires les plus courants est celui de CertBot, qui peut bien fonctionner, mais une autre application open source disponible est acme.sh. Il s'agit d'un client ACME entièrement basé sur le shell (le protocole utilisé par LetsEncrypt pour l'émission de certificats SSL). Avec de nombreuses fonctionnalités avancées intégrées, ce client permet des configurations complexes.

La façon la plus simple d'installer (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  | sh

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

L'installation va télécharger et déplacer les fichiers vers ~/.acme.shet installez un alias dans votre ~/.bashrc fichier. De plus, un travail cron sera installé s'il est disponible.

Premiers pas

Beaucoup de la façon dont vous utilisez (acme.sh)() dépend de la méthode et de l'application pour lesquelles vous demandez le certificat. Acme.sh propose de nombreuses méthodes différentes pour demander un certificat, telles que:

Dans cet article, je vais 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.

Configuration 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 d'un certificat.

letsencrypt.conf

Il est recommandé de créer une configuration autonome qui peut être incluse selon les besoins dans les configurations vhost, comme ceci: 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:
    # 
    # 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

Tout comme NGINX, Apache peut créer un fichier de configuration distinct. Un exemple de cette configuration est illustré ci-dessous.

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

Dans ce cas, la configuration Apache est spécifique à l'hôte virtuel en raison de la nécessité d'inclure l'emplacement du disque. Ce qui suit est un emplacement commun, mais il peut être différent selon votre configuration spécifique.

Alias /.well-known/acme-challenge/ "/var/www/html/.well-known/acme-challenge/"

    AllowOverride None
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS

Configuration DNS

Dans cet article, je montre le 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 d'environnement 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 fichier.

Cela peut ne pas être évident, mais il y a un espace précédent avant chaque commande d'exportation, ce qui garantit généralement qu'elles ne seront pas lues dans l'historique, au cas où.

 export CF_Key="#########..."
 export CF_Email="cfaccount@email.com"

Émettre un certificat via la méthode Webroot

Lors de l'exécution de la commande suivante, deux domaines sont définis dans un même certificat. Il s'agit de s'assurer que lorsque l'un des noms d'hôte est demandé (et souvent redirigé vers le nom canonique), la demande sera toujours 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 émis sont en /.acme.sh/acme.sh/{domain_name}

Émettre un certificat via la méthode DNS

Lorsque vous utilisez la méthode d'émission DNS, un txt l'enregistrement est créé via l'API Cloudflare et LetsEncrypt vérifie le domaine à l'aide de cet enregistrement temporaire. Il s'agit d'une méthode plus propre, car aucun webroot la configuration est nécessaire.

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

Les certificats émis sont en /.acme.sh/acme.sh/{domain_name}

Renouveler le certificat

Par défaut, Acme.sh créera un cronjob comme l'entrée suivante:

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

Pour forcer un renouvellement, vous pouvez exécuter 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

Suppression de certificats

Si vous ne souhaitez plus renouveler un certificat, il est très facile de le supprimer. Cependant, cela ne supprime pas le certificat du disque. Pour ce faire, vous devrez accéder à ~/.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 répertoriant les certificats comme suit:

acme.sh --list

Conclusion

LetsEncrypt offre un excellent service facile à utiliser pour approvisionner des certificats SSL à utiliser sur des sites Web. La création d'un site Web sécurisé est plus facile que jamais, et l'utilisation du client acme.sh signifie que vous avez un contrôle complet sur la façon dont cela se produit sur votre serveur Web.

Avec un certain nombre de méthodes différentes pour obtenir un certificat, même des méthodes très sécurisées, comme un domaine délégué, permettent de récupérer correctement les certificats nécessaires.

★★★★★