Comment configurer Nginx avec Let’s Encrypt en utilisant ACME sur Ubuntu 20.04

Dans un tutoriel précédent, nous avons décrit comment obtenir un certificat SSL/TLS gratuit auprès de Let’s Encrypt en utilisant Certbot.

Dans ce tutoriel, nous aimerions vous montrer une autre façon d’obtenir et de renouveler facilement un certificat SSL/TLS gratuit de Let’s Encrypt en utilisant le acme.sh script sur Ubuntu 20.04.

Si vous n’avez pas encore de serveur Web NGINX fonctionnel, voici un guide d’installation simple de NGINX que vous pouvez suivre.

Obtenez acme.sh

le acme.sh Le script shell automatise l’émission et le renouvellement des certificats gratuits de Let’s Encrypt. Vous pouvez obtenir le script acme.sh soit en le téléchargeant directement depuis le Web, soit en clonant son projet git.

Téléchargez acme.sh depuis le Web

Exécutez l’une des deux commandes ci-dessous pour télécharger et exécuter le script acme.sh.

$ curl https://get.acme.sh | sh

Ou

$ wget -O – https://get.acme.sh | sh

Ci-dessous un example de ce à quoi vous pouvez vous attendre lorsque le script s’exécute.

$ wget -O – https://get.acme.sh | sh –2021-02-16 11:55:47– https://get.acme.sh/ Résolution de get.acme.sh (get.acme.sh)… 2606:4700:3032::6815:223e, 2606:4700:3031::ac43:c710, 172.67.199.16, … Connexion à get.acme.sh (get.acme.sh)|2606:4700:3032::6815:223e|:443… connecté. Requête HTTP envoyée, en attente de réponse… 200 OK Longueur : non spécifiée [text/html]
Enregistrement dans : ‘STDOUT’
[ <=> ] 937 –.-KB/s en 0s 16-02-2121 11:55:47 (11,8 Mo/s) – écrit sur stdout [937]
% Total % Reçu % Xferd Vitesse moyenne Temps Temps Temps Téléchargement actuel Téléchargement Total dépensé Vitesse restante 100 204k 100 204k 0 0 3350k 0 –:–:– –:–:– –:–:– 3350k
[Tue 16 Feb 2021 11:55:47 AM UTC] Installation à partir d’archives en ligne.
[Tue 16 Feb 2021 11:55:47 AM UTC] Téléchargement https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] Extraction de master.tar.gz
[Tue 16 Feb 2021 11:55:47 AM UTC] Il est recommandé d’installer d’abord socat.
[Tue 16 Feb 2021 11:55:47 AM UTC] Nous utilisons socat pour le serveur autonome si vous utilisez le mode autonome.
[Tue 16 Feb 2021 11:55:47 AM UTC] Si vous n’utilisez pas le mode autonome, ignorez simplement cet avertissement.
[Tue 16 Feb 2021 11:55:47 AM UTC] Installation dans /home/shola/.acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] Installé dans /home/shola/.acme.sh/acme.sh
[Tue 16 Feb 2021 12:05:54 PM UTC] Installation de l’alias vers ‘/home/shola/.bashrc’
[Tue 16 Feb 2021 12:05:54 PM UTC] OK, fermez et rouvrez votre terminal pour commencer à utiliser acme.sh
[Tue 16 Feb 2021 11:55:47 AM UTC] Installation de la tâche cron 47 0 * * * “/home/shola/.acme.sh”/acme.sh –cron –home “/home/shola/.acme.sh” > /dev/null
[Tue 16 Feb 2021 11:55:47 AM UTC] Bon, bash est trouvé, alors changez le shebang à utiliser bash comme préféré.
[Tue 16 Feb 2021 11:55:48 AM UTC] d’accord
[Tue 16 Feb 2021 11:55:48 AM UTC] Installation réussie !

Cloner le projet git acme.sh

Vous pouvez également exécuter les commandes ci-dessous, une par ligne, pour cloner le projet git acme.sh et exécuter le script.

$ git clone https://github.com/acmesh-official/acme.sh.git $ cd acme.sh $ ./acme.sh –install

Quelle que soit la méthode que vous choisissez d’utiliser, une fois que vous voyez le “Installation réussie !“, vous pouvez close la fenêtre du terminal et ouvrez-la à nouveau pour valider l’installation.

Pour voir les informations d’utilisation de acme.sh, exécutez la commande suivante.

$ acme.sh -h

Vous pouvez également exécuter la commande ci-dessous pour vérifier la version acme.sh.

$ acme.sh –version

Générer un certificat

Pour générer un seul certificat pour un seul domaine, exécutez la commande ci-dessous.

Remplacer votredomaine.com avec votre domaine enregistré. Remplacez également /var/www/votredomaine.com avec le dossier racine du site Web de votre domaine, le cas échéant.

$ acme.sh –issue -d votredomaine.com -w /var/www/votredomaine.com

Pour plusieurs domaines/sous-domaines qui partagent le même dossier racine de site Web, vous pouvez exécuter la commande suivante pour émettre un certificat.

$ acme.sh –issue -d votredomaine.com -d www.votredomaine.com -d sous-domaine.votredomaine.com -w /var/www/votredomaine.com

Les certificats générés seront stockés dans ~/.acme.sh/votredomaine.com

Installer le certificat sur NGINX en utilisant acme

Après avoir généré le certificat via le script acme.sh, l’étape suivante consiste à l’installer sur NGINX. Tout d’abord, créez un dossier dans lequel le certificat généré sera copié.

$ sudo mkdir -p /etc/nginx/certs/votredomaine.com

Exécutez la commande suivante pour installer le certificat. N’oubliez pas de remplacer votredomaine.com avec votre domaine enregistré.

$ acme.sh –install-cert -d votredomaine.com –key-file /etc/nginx/certs/votredomaine.com/key.pem –fullchain-file /etc/nginx/certs/yourdomain.com/cert .pem –reloadcmd “service nginx force-reload”

Mettre à jour le fichier de blocage du serveur NGINX

La dernière étape consiste à mettre à jour le fichier de blocage du serveur pour votre domaine afin d’inclure les directives liées au SSL.
Exécutez la commande ci-dessous pour modifier le fichier de bloc de serveur.

$ sudo nano /etc/nginx/sites-available/votredomaine.com

Ensuite, ajoutez les lignes suivantes.

Ecoutez [::]:443 ssl ipv6only=on;
écouter 443 ssl;
certificat_ssl /etc/nginx/certs/cloudindevs.com/cert.pem ;
ssl_certificate_key /etc/nginx/certs/cloudindevs.com/key.pem ;

Après les ajouts, votre fichier de bloc de serveur devrait ressembler à ce que vous voyez dans l’image ci-dessous. Les nouveaux ajouts sont surlignés en rouge. Notez également que les directives d’écoute pour le port 80 ont été mises en commentaire.

Mettre à jour le fichier de blocage du serveur NGINX pour utiliser SSL

Save changements et close le fichier.

Redémarrez NGINX avec :

$ sudo systemctl redémarrer nginx

Visitez votre site Web dans un navigateur pour confirmer que la communication sécurisée est désormais activée.

Renouvellement du certificat

Les certificats émis par Let’s Encrypt se renouvelleront automatiquement tous les 60 jours.

Mais vous pouvez également renouveler manuellement le certificat si vous le souhaitez. Exécutez la commande ci-dessous.

$ acme.sh –renew -d votredomaine.com –force

Pour arrêter le renouvellement du certificat, exécutez la commande suivante.

$ acme.sh –remove -d votredomaine.com

Mettre à niveau acme.sh

Il est recommandé de toujours utiliser la dernière version de acme.sh. Exécutez la commande ci-dessous pour vous assurer que acme.sh est mis à jour automatiquement.

$ acme.sh –upgrade –auto-upgrade

Pour désactiver la mise à niveau automatique pour acme.sh, exécutez la commande suivante.

$ acme.sh –upgrade –auto-upgrade 0

Si vous ne souhaitez pas qu’acme.sh soit mis à jour automatiquement, utilisez la commande ci-dessous pour le mettre à jour manuellement.

$ acme.sh –upgrade

Conclusion

Dans ce guide, nous avons décrit les étapes pour obtenir et renouveler des certificats SSL/TLS gratuits de Let’s Encrypt en utilisant le script shell acme.sh sur Ubuntu. Cette méthode est une alternative à l’utilisation de l’outil Certbot. Nous aimerions connaître votre expérience avec ces outils.