Let’s Encrypt est une autorité de certification (CA) qui fournit un moyen facile d’obtenir et d’installer des certificats TLS/SSL gratuits, permettant ainsi le cryptage HTTPS sur les serveurs web. Il simplifie le processus en fournissant un logiciel client, Certbot, qui tente d’automatiser la plupart (sinon la totalité) des étapes requises. Actuellement, l’ensemble du processus d’obtention et d’installation d’un certificat est entièrement automatisé sur Apache et Nginx.
Dans ce tutoriel, vous allez utiliser Certbot pour obtenir un certificat SSL gratuit pour Nginx sur Ubuntu 20.04 et configurer votre certificat pour qu’il se renouvelle 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 blocage de serveur Nginx pour chaque domaine, car cela permet d’éviter les erreurs courantes et de conserver les fichiers par défaut comme configuration de repli.
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 sudo non root et un pare-feu.
Un nom de domaine enregistré. Ce tutoriel utilisera example.com
tout du long. Vous pouvez acheter un nom de domaine sur Namecheap, en obtenir un gratuitement avec Freenom, ou utiliser le bureau d’enregistrement de domaine de votre choix.
Les deux enregistrements DNS suivants ont été configurés pour votre serveur. Si vous utilisez DigitalOcean, veuillez consulter notre documentation DNS pour plus de détails sur la façon de les ajouter.
example.com
pointant sur l’adresse IP publique de votre serveur.www.example.com
pointant sur l’adresse IP publique de votre serveur.Nginx installé en suivant le guide Comment installer Nginx sur Ubuntu 20.04. Assurez-vous que vous disposez d’un bloc serveur pour votre domaine. Ce tutoriel utilisera /etc/nginx/sites-available/example.com
à titre d’exemple.
La première étape de l’utilisation de Let’s Encrypt pour obtenir un certificat SSL consiste à installer le logiciel Certbot sur votre serveur.
Installez Certbot et son plugin Nginx avec apt
:
- sudo apt install certbot python3-certbot-nginx
Certbot est maintenant prêt à l’emploi, mais pour qu’il configure automatiquement le SSL pour Nginx, nous devons vérifier une partie de la configuration de Nginx.
Certbot doit être capable de trouver le bon bloc serveur
dans votre configuration Nginx pour pouvoir configurer automatiquement le SSL. Plus précisément, il recherche 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 de manière appropriée.
Pour vérifier, ouvrez le fichier de configuration de votre domaine en utilisant nano
ou votre éditeur de texte préféré :
- sudo nano /etc/nginx/sites-available/example.com
Recherchez la ligne server_name
existante. Cela devrait ressembler à ceci :
...
server_name example.com www.example.com;
...
Si c’est le cas, quittez votre éditeur et passez à l’étape suivante.
Si ce n’est pas le cas, mettez-le à jour pour qu’il corresponde. Ensuite, enregistrez le fichier, quittez votre éditeur et vérifiez la syntaxe de vos modifications de configuration :
- sudo nginx -t
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 :
- sudo systemctl reload nginx
Certbot peut maintenant trouver le bon bloc serveur
et le mettre à jour automatiquement.
Ensuite, mettons à jour le pare-feu pour autoriser le trafic HTTPS.
Si vous avez activé le pare-feu UFW
, comme le recommandent les guides des conditions 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 les paramètres actuels en tapant :
- sudo ufw status
Il ressemblera probablement à ceci, ce qui signifie que seul le trafic HTTP est autorisé sur 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 laisser entrer en plus le trafic HTTPS, autorisez le profil Nginx Full et supprimez l’autorisation de profil HTTP Nginx redondant :
- sudo ufw allow 'Nginx Full'
- sudo ufw delete allow 'Nginx HTTP'
Votre statut devrait désormais ressembler à ceci :
- sudo ufw status
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.
Certbot propose différents moyens d’obtenir des certificats SSL par le biais de plugins. Le plugin Nginx se chargera de reconfigurer Nginx et de recharger la configuration chaque fois que nécessaire. Pour utiliser ce plugin, tapez ce qui suit :
- sudo certbot --nginx -d example.com -d www.example.com
Cela exécute certbot
avec le plugin --nginx
, en utilisant -d
pour spécifier les noms de domaine pour lesquels nous aimerions que le certificat soit valide.
Si vous utilisez certbot
pour la première fois, vous serez invité à saisir une adresse électronique et à accepter les conditions de service. Après avoir fait cela, certbot
communiquera avec le serveur Let’s Encrypt, puis exécutera un défi pour vérifier que vous contrôlez le domaine pour lequel vous demandez un certificat.
Si cela réussit, certbot
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):
Faites votre choix, puis appuyez sur ENTER
. La configuration sera mise à jour, et Nginx se rechargera pour récupérer les nouveaux paramètres. certbot
terminera par un message vous indiquant que le processus a réussi et précisant l’emplacement de stockage de 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 par une icône de cadenas. Si vous testez votre serveur en utilisant le SSL Labs Server Test1, il obtiendra la note A.
Pour finir, testons le processus de renouvellement.
Les certificats Let’s Encrypt ne sont valables que quatre-vingt-dix jours. Cette mesure vise à encourager les utilisateurs à automatiser le processus de renouvellement de leur certificat. Le paquet certbot
que nous avons installé s’en charge pour nous en ajoutant une minuterie système qui s’exécute deux fois par jour et renouvelle automatiquement tout certificat qui se trouve dans les trente jours avant son expiration.
Vous pouvez consulter le statut de la minuterie avec systemctl
:
- sudo systemctl status certbot.timer
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 faire un essai avec certbot
:
- sudo certbot renew --dry-run
Si vous ne voyez pas d’erreurs, tout est prêt. Si nécessaire, Certbot renouvellera vos certificats et rechargera Nginx pour récupérer les modifications. Si le processus de renouvellement automatisé échoue, Let’s Encrypt enverra un message à l’adresse électronique que vous avez indiquée, vous avertissant de l’expiration prochaine de votre certificat.
Dans ce tutoriel, vous avez installé le client Let’s Encrypt certbot
, téléchargé les 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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!