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.sh
et installez un alias dans votre ~/.bashrc
Record. En même temps, une tâche cron sera installée si elle est activée.
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
Oui 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.