introduction
Let’s Encrypt est une autorité de certification (CA) offrant un moyen simple d’obtenir et d’installer gratuitement https://www.digitalocean.com/community/tutorials/openss-essentials-working-with-ssl-certificates-private-keys-and. -csrs [certificats TLS / SSL], activant le protocole HTTPS chiffré 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 utiliserez Certbot pour obtenir un certificat SSL gratuit pour Nginx sur Debian 9 et configurer votre certificat pour qu’il se renouvelle automatiquement.
Ce didacticiel utilisera un fichier de blocage de serveur Nginx distinct au lieu du fichier par défaut. Nous vous recommandons 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 en tant que configuration de secours.
Conditions préalables
Pour suivre ce tutoriel, vous aurez besoin de:
-
Un serveur Debian 9, configuré en suivant ce tutoriel initial initial pour Debian 9, ainsi qu’un sudo non -root utilisateur et un pare-feu.
-
Un nom de domaine entièrement enregistré. Ce tutoriel utilisera * example.com * tout au long. Vous pouvez acheter un nom de domaine sur https://namecheap.com [Namecheap], en obtenir un gratuitement sur Freenom ou utiliser le registraire de domaine de votre choix. .
-
Les deux enregistrements DNS suivants sont configurés pour votre serveur. Vous pouvez suivre this introduction to DigitalOcean DNS pour plus de détails sur la façon de les ajouter.
-
Un enregistrement A avec
++
pointant sur l’adresse IP publique de votre serveur. -
Un enregistrement A avec
+ www. +
Pointant vers l’adresse IP publique de votre serveur. -
Nginx est installé en suivant Comment installer Nginx sur Debian 9. Assurez-vous que vous avez un https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-9#step-5-%E2%80%93-setting-up-server -blocks [bloc serveur] pour votre domaine. Ce tutoriel utilisera
+ / etc / nginx / sites-available / +
comme exemple.
Étape 1 - Installation de Certbot
La première étape pour utiliser Let’s Encrypt pour obtenir un certificat SSL consiste à installer le logiciel Certbot sur votre serveur.
Certbot est en développement très actif et les paquets Certbot fournis par Debian avec les dernières versions stables ont tendance à être obsolètes. Cependant, nous pouvons obtenir un paquet plus à jour en activant le référentiel de backports Debian 9 dans + / etc / apt / sources.list +
, où le gestionnaire de paquets + apt +
recherche les sources du paquet. Le référentiel de backports comprend des packages recompilés pouvant être exécutés sans nouvelle bibliothèque sur des distributions Debian stables.
Pour ajouter le référentiel de backports, ouvrez d’abord + / etc / apt / sources.list +
:
sudo nano /etc/apt/sources.list
Au bas du fichier, ajoutez les miroirs suivants du projet Debian:
/etc/apt/sources.list
...
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
Ceci inclut les packages + main +
, qui sont Les principes du logiciel libre Debian (DFSG) - ainsi que les ` non-free + `et
+ contrib + `composants, qui ne sont pas eux-mêmes compatibles DFSG ou incluent des dépendances dans cette catégorie.
Enregistrez et fermez le fichier lorsque vous avez terminé.
Mettez à jour la liste des packages pour récupérer les informations de package du nouveau référentiel:
sudo apt update
Enfin, installez le package Nginx de Certbot avec + apt +
:
sudo apt install python-certbot-nginx -t stretch-backports
Certbot est maintenant prêt à être utilisé, mais pour configurer SSL pour Nginx, nous devons vérifier une partie de la configuration de Nginx.
Étape 2 - Confirmation de la configuration de Nginx
Certbot doit pouvoir trouver le bloc serveur +
correct dans votre configuration Nginx pour pouvoir configurer automatiquement SSL. Pour ce faire, il recherche une directive + nom_serveur +
correspondant au domaine demandé.
Si vous avez suivi les https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-9#step-5-%E2%80%93-setting-up-server-blocks [étape de configuration du bloc de serveur dans le didacticiel d’installation de Nginx], vous devriez avoir un bloc de serveur pour votre domaine situé à + / etc / nginx / sites-available / +
avec la directive + nom_serveur +
déjà définie de manière appropriée.
Pour vérifier, ouvrez le fichier de blocage du serveur de votre domaine en utilisant + nano +
ou votre éditeur de texte préféré:
sudo nano /etc/nginx/sites-available/
Recherchez la ligne + nom_serveur +
existante. Ça devrait ressembler à ça:
/etc/nginx/sites-available/example.com
...
server_name www.;
...
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. Enregistrez ensuite 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 de blocage du serveur et recherchez les fautes de frappe ou les 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 bloc serveur +
correct et le mettre à jour.
Ensuite, mettons à jour le pare-feu pour autoriser le trafic HTTPS.
Étape 3 - Autoriser HTTPS à travers le pare-feu
Si le pare-feu + ufw +
est activé, comme recommandé dans les guides de prérequis, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS.
Vous pouvez voir le réglage actuel en tapant:
sudo ufw status
Cela 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 laisser le trafic HTTPS, autoriser le profil Nginx Full et supprimer la tolérance de profil HTTP Nginx redondant:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Votre statut devrait maintenant 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.
Étape 4 - Obtention d’un certificat SSL
Certbot propose diverses méthodes pour obtenir des certificats SSL via des 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 -d
Ceci exécute + certbot +
avec le plugin + - nginx +
, en utilisant + -d +
pour spécifier les noms pour lesquels nous aimerions que le certificat soit valide.
Si vous utilisez pour la première fois + certbot +
, vous serez invité à entrer une adresse électronique et à accepter les conditions d’utilisation. Ensuite, + certbot +
communiquera avec le serveur Let’s Encrypt, puis lancera un défi afin de 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 + ENTER
. La configuration sera mise à jour et Nginx se rechargera pour récupérer les nouveaux paramètres. + certbot +
se terminera par un message vous informant que le processus a abouti et où vos certificats sont stockés:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live//fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live//privkey.pem
Your cert will expire on 2018-07-23. 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"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- 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 notez 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 vert. Si vous testez votre serveur à l’aide du SSL Labs Server Test, il obtiendra une note * A *.
Terminons par tester le processus de renouvellement.
Étape 5 - Vérification du renouvellement automatique de Certbot
Les certificats de Let Encrypt ne sont valables que quatre-vingt-dix jours. Cela encourage les utilisateurs à automatiser leur processus de renouvellement des certificats. Le paquetage + certbot +
que nous avons installé s’occupe de cela en ajoutant un script de renouvellement à + / etc / cron.d +
. Ce script est exécuté deux fois par jour et renouvelle automatiquement tout certificat dans les trente jours suivant son expiration.
Pour tester le processus de renouvellement, vous pouvez effectuer un essai à blanc avec + certbot +
:
sudo certbot renew --dry-run
Si vous ne voyez aucune erreur, vous êtes tous ensemble. Si nécessaire, Certbot renouvellera vos certificats et rechargera Nginx pour prendre en compte les modifications. En cas d’échec du processus de renouvellement automatique, Let’s Encrypt enverra un message au courrier électronique que vous avez spécifié pour vous avertir de l’expiration de votre certificat.
Conclusion
Dans ce tutoriel, vous avez installé le client Let’s Encrypt + certbot +
, téléchargé les certificats SSL de votre domaine, configuré Nginx pour l’utilisation de ces certificats et configuré le renouvellement automatique du certificat. Si vous avez d’autres questions sur l’utilisation de Certbot, their documentation est un bon point de départ.