Introduction
Let’s Encrypt est une autorité de certification (CA) qui fournit un moyen facile d’obtenir et d’installer gratuitement des certificats TLS/SSL, permettant ainsi le chiffrement HTTPS sur les serveurs web. Elle simplifie le processus en fournissant un client logiciel, Certbot, qui tente d’automatiser la plupart, voire tous, des étapes requises. Actuellement, l’ensemble du processus d’obtention et d’installation d’un certificat est entièrement automatisé à la fois sur Apache et Nginx.
Dans ce tutoriel, vous utiliserez Certbot pour obtenir un certificat SSL gratuit pour Nginx sur Ubuntu 20.04 et configurerez votre certificat pour se renouveler automatiquement.
Ce tutoriel utilisera un fichier de configuration de serveur Nginx séparé au lieu du fichier par défaut. Nous recommandons de créer de nouveaux fichiers de bloc serveur Nginx pour chaque domaine car cela aide à éviter les erreurs courantes et à maintenir les fichiers par défaut en tant que configuration de secours.
Laissez DigitalOcean se charger de la gestion de Nginx et de Let’s Encrypt. La plateforme d’application DigitalOcean vous permettra de déployer directement depuis GitHub en quelques minutes. La plateforme d’application gérera également les certificats SSL et le routage pour vous.
Prérequis
Pour suivre ce tutoriel, vous aurez besoin de :
-
Un serveur Ubuntu 20.04 configuré en suivant ce tutoriel de configuration initiale du serveur pour Ubuntu 20.04, comprenant un utilisateur non-root avec les privilèges sudo et un pare-feu.
-
Un nom de domaine enregistré. Ce tutoriel utilisera
example.com
comme exemple. Vous pouvez acheter un nom de domaine chez Namecheap, en obtenir un gratuitement avec Freenom, ou utiliser le registraire de domaine de votre choix. -
Les deux enregistrements DNS suivants configurés pour votre serveur. Si vous utilisez DigitalOcean, veuillez consulter notre documentation sur les DNS pour savoir comment les ajouter.
- Un enregistrement A avec
example.com
pointant vers l’adresse IP publique de votre serveur. - Un enregistrement A avec
www.example.com
pointant vers l’adresse IP publique de votre serveur.
- Un enregistrement A avec
-
Nginx installé en suivant le tutoriel Comment installer Nginx sur Ubuntu 20.04. Assurez-vous d’avoir un bloc serveur pour votre domaine. Ce tutoriel utilisera
/etc/nginx/sites-available/example.com
comme exemple.
Étape 1 — Installation de Certbot
La première étape pour utiliser Let’s Encrypt afin d’obtenir un certificat SSL est d’installer le logiciel Certbot sur votre serveur.
Installez Certbot ainsi que son plugin Nginx avec la commande apt
:
Certbot est maintenant prêt à être utilisé, mais pour qu’il configure automatiquement SSL pour Nginx, nous devons vérifier certaines configurations de Nginx.
Étape 2 – Confirmation de la configuration de Nginx
Certbot doit pouvoir trouver le bloc server
correct dans votre configuration Nginx afin de configurer automatiquement SSL. Plus précisément, il le fait en recherchant une directive server_name
qui correspond au domaine pour lequel vous demandez un certificat.
Si vous avez suivi l’étape de configuration du bloc serveur dans le tutoriel d’installation de Nginx, vous devriez avoir un bloc serveur pour votre domaine dans /etc/nginx/sites-available/example.com
avec la directive server_name
déjà définie correctement.
Pour vérifier, ouvrez le fichier de configuration de votre domaine avec nano
ou votre éditeur de texte préféré:
Cherchez la ligne server_name
existante. Elle devrait ressembler à ceci:
Si c’est le cas, quittez votre éditeur et passez à l’étape suivante.
Si ce n’est pas le cas, mettez-le à jour pour correspondre. Enregistrez ensuite le fichier, quittez votre éditeur et vérifiez la syntaxe de vos modifications de configuration:
Si vous obtenez une erreur, rouvrez le fichier du bloc serveur et vérifiez s’il y a des fautes de frappe ou des caractères manquants. Une fois que la syntaxe de votre fichier de configuration est correcte, rechargez Nginx pour charger la nouvelle configuration:
Certbot peut désormais trouver le bloc server
correct et le mettre à jour automatiquement.
Ensuite, mettons à jour le pare-feu pour autoriser le trafic HTTPS.
Étape 3 — Autoriser le trafic HTTPS à travers le pare-feu
Si vous avez activé le pare-feu ufw
, comme recommandé par les guides préalables, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS. Heureusement, Nginx enregistre quelques profils avec ufw
lors de l’installation.
Vous pouvez voir le paramètre actuel en tapant:
Il ressemblera probablement à ceci, ce qui signifie que seul le trafic HTTP est autorisé vers le serveur web:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Pour permettre en plus le trafic HTTPS, autorisez le profil Nginx Full et supprimez l’autorisation redondante du profil Nginx HTTP:
Votre statut devrait maintenant ressembler à ceci:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Ensuite, exécutons Certbot et récupérons nos certificats.
Étape 4 — Obtention d’un certificat SSL
Certbot propose plusieurs façons d’obtenir des certificats SSL via des plugins. Le plugin Nginx se chargera de reconfigurer Nginx et de recharger la configuration lorsque cela est nécessaire. Pour utiliser ce plugin, tapez ce qui suit :
Cela exécute certbot
avec le plugin --nginx
, en utilisant -d
pour spécifier les noms de domaine pour lesquels nous voulons que le certificat soit valide.
Si c’est la première fois que vous exécutez certbot
, on vous demandera d’entrer une adresse e-mail et d’accepter les conditions d’utilisation. Après avoir fait cela, certbot
communiquera avec le serveur Let’s Encrypt, puis lancera un défi pour vérifier que vous contrôlez le domaine pour lequel vous demandez un certificat.
Si cela réussit, certbot
vous demandera comment vous souhaitez configurer vos paramètres HTTPS.
OutputPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Sélectionnez votre choix puis appuyez sur ENTRÉE
. La configuration sera mise à jour et Nginx se rechargera pour prendre en compte les nouveaux paramètres. certbot
terminera avec un message vous indiquant que le processus a été réussi et où sont stockés vos certificats :
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Vos certificats sont téléchargés, installés et chargés. Essayez de recharger votre site Web en utilisant https://
et remarquez l’indicateur de sécurité de votre navigateur. Il devrait indiquer que le site est correctement sécurisé, généralement avec une icône de verrou. Si vous testez votre serveur en utilisant le Test de serveur SSL Labs, il obtiendra une note A.
Terminons en testant le processus de renouvellement.
Étape 5 — Vérification du renouvellement automatique de Certbot
Les certificats de Let’s Encrypt ne sont valides que pendant quatre-vingt-dix jours. Cela vise à encourager les utilisateurs à automatiser leur processus de renouvellement de certificat. Le package certbot
que nous avons installé s’occupe de cela pour nous en ajoutant une minuterie systemd qui s’exécutera deux fois par jour et renouvellera automatiquement tout certificat qui expire dans les trente jours.
Vous pouvez interroger l’état de la minuterie avec systemctl
:
Output● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service
Pour tester le processus de renouvellement, vous pouvez effectuer un essai à sec avec certbot
:
Si vous ne voyez pas d’erreurs, vous êtes prêt. Si nécessaire, Certbot renouvellera vos certificats et rechargera Nginx pour prendre en compte les modifications. Si le processus de renouvellement automatique échoue, Let’s Encrypt enverra un message à l’adresse e-mail que vous avez spécifiée pour vous avertir lorsque votre certificat est sur le point d’expirer.
Conclusion
Dans ce tutoriel, vous avez installé le client Let’s Encrypt certbot
, téléchargé des certificats SSL pour votre domaine, configuré Nginx pour utiliser ces certificats, et mis en place le renouvellement automatique des certificats. Si vous avez d’autres questions sur l’utilisation de Certbot, la documentation officielle est un bon point de départ.