Comment configurer Nginx avec Let’s Encrypt sur Ubuntu 20.04

Pour activer la communication sécurisée (c’est-à-dire HTTPS) sur votre serveur Web NGINX, vous devez obtenir un certificat SSL/TLS auprès d’une autorité de certification de confiance. Chiffrons est une autorité de certification à but non lucratif qui propose des certificats SSL/TLS gratuits.

Ce tutoriel décrit comment configurer un certificat SSL/TLS gratuit émis par Let’s Encrypt sur Ubuntu 20.04 Serveur LTS en cours d’exécution Nginx.

Conditions préalables:

  • Serveur Ubuntu 20.04 installé avec Nginx et site Web hébergé

Installer Certbot sur Ubuntu

Certbot est un outil open source qui simplifie et automatise le processus d’obtention et de renouvellement des certificats de Let’s Encrypt. Nous allons installer Certbot en utilisant le système de déploiement Snap. Snap est pré-installé sur Ubuntu 20.04.

Mettre à jour snapd

Exécutez les commandes suivantes pour mettre à jour snapd.

$ sudo snap install core

$ sudo snap refresh core

Installer certbot snap

Ensuite, nous sommes prêts à installer le snap Certbot.

Noter: Si vous avez déjà installé Certbot à l’aide de la commande apt standard, exécutez d’abord la commande suivante pour le supprimer. Cela garantira que le snap Certbot fonctionne correctement.

$ sudo apt-get remove certbot

$ sudo snap install --classic certbot
certbot 1.11.0 from Certbot Project (certbot-eff✓) installed

Activer la commande certbot

Après avoir installé avec succès le snap Certbot, exécutez la commande suivante pour activer certbot pour utilisation.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Obtenez votre certificat

Lorsque vous exécutez la commande ci-dessous, certbot vous guidera tout au long du processus. Certbot met également à jour automatiquement votre configuration NGINX pour activer HTTPS.

$ sudo certbot --nginx

Vous trouverez ci-dessous un résumé de ce que certbot vous invitera à faire pendant ce processus.

  1. Fournissez une adresse e-mail à laquelle les avis de renouvellement et de sécurité seront envoyés
  2. Enter Oui accepter les conditions d’utilisation
  3. Enter Oui ou m accepter ou refuser de partager votre adresse e-mail avec les développeurs de Certbot
  4. Confirmez le(s) nom(s) de domaine pour lequel vous souhaitez activer HTTPS

Sortir:

Enregistrement du journal de débogage dans /var/log/letsencrypt/letsencrypt.log Plugins sélectionnés : Authenticator nginx, Installer nginx
Enter adresse e-mail (utilisée pour les avis de renouvellement urgent et de sécurité) (Enter ‘c’ pour annuler) : [email protected] – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Veuillez lire les conditions d’utilisation sur https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Vous devez accepter pour vous inscrire sur le serveur ACME. Êtes-vous d’accord? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Oui Non: y – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Seriez-vous prêt, une fois votre premier certificat est émis avec succès, pour partager votre adresse e-mail avec l’Electronic Frontier Foundation, partenaire fondateur du projet Let’s Encrypt et l’organisation à but non lucratif qui développe Certbot? Nous aimerions vous envoyer un e-mail sur notre travail de cryptage du Web, les actualités de l’EFF, les campagnes et les moyens de soutenir la liberté numérique. – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – (Oui Non: n Compte enregistré. Pour quels noms souhaitez-vous activer HTTPS ? – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 1 : domaine1.com 2 : www.domaine1 .com – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Sélectionnez les nombres appropriés séparés par des virgules et /ou des espaces, ou laissez la saisie vide pour sélectionner toutes les options affichées (Enter ‘c’ pour annuler) : Demande de certificat pour domaine1.com et www.domain1.com Exécution des défis suivants : Défi http-01 pour domaine1.com Défi http-01 pour www.domain1.com En attente de vérification… Nettoyage relever les défis Déploiement du certificat sur VirtualHost /etc/nginx/sites-enabled/domain1 Déploiement du certificat sur VirtualHost /etc/nginx/sites-enabled/domain1 Rediriger tout le trafic sur le port 80 vers SSL dans /etc/nginx/sites-enabled/domain1 Redirection tout le trafic sur le port 80 vers SSL dans /etc/nginx/sites-enabled/domain1 – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – Toutes nos félicitations! Vous avez activé avec succès https://domain1.com et https://www.domain1.com – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – REMARQUES IMPORTANTES : – Félicitations ! Votre certificat et votre chaîne ont été enregistrés à : /etc/letsencrypt/live/domain1.com/fullchain.pem Votre fichier de clé a été enregistré à : /etc/letsencrypt/live/domain1.com/privkey.pem Votre certificat expirera le 2021-04-10. Pour obtenir une version nouvelle ou modifiée de ce certificat à l’avenir, exécutez simplement à nouveau certbot avec l’option “certonly”. Pour renouveler de manière non interactive *tous* vos certificats, exécutez “certbot refresh” – Si vous aimez Certbot, veuillez envisager de soutenir notre travail en : faisant un don à l’ISRG / Let’s Encrypt : https://letsencrypt.org/donate Faire un don à l’EFF : https://eff.org/donate-le

Cerbot ajoutera les entrées suivantes (phrases affichées gérées par Certbot) dans le fichier de bloc nginx.

/etc/nginx/sites-enabled/domain1

$ cat /etc/nginx/sites-enabled/domain1
# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
server {

server_name domain1.com www.domain1.com;

root /var/www/domain1.com;
index index.html;

location / {
try_files $uri $uri/ =404;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
if ($host = www.domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

if ($host = domain1.com) {
return 301 https://$host$request_uri;
} # managed by Certbot

listen 80;
listen [::]:80;

server_name domain1.com www.domain1.com;
return 404; # managed by Certbot
}
$

Parcourez votre site Web pour confirmer que l’icône de verrouillage est maintenant affichée.

Processus de renouvellement de certificat

Les certificats émis par Let’s Encrypt sont valables 90 jours. Lors de l’installation, certbot crée une tâche planifiée pour renouveler automatiquement vos certificats avant leur expiration. Tant que vous ne modifiez pas la configuration de votre serveur Web, vous n’aurez pas à réexécuter certbot.

Exécutez la commande suivante pour tester le processus de renouvellement automatique.

$ sudo certbot renew --dry-run

Conclusion

Dans ce guide, nous avons appris comment configurer le certificat SSL crypté sur le serveur Web NGINX exécuté sur Ubuntu 20.04.

Au lieu de Cerbot, vous pouvez également utiliser ACMÉ Script Shell pour émettre et renouveler automatiquement les certificats gratuits de Let’s Encrypt.

Si quelque chose n’est pas clair, faites-le nous savoir dans la section commentaires ci-dessous.