introduction
Let’s Encrypt est une autorité de certification (CA) qui offre un moyen simple d’obtenir et d’installer desTLS/SSL certificates gratuits, permettant ainsi le chiffrement 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 didacticiel, vous utiliserez Certbot pour obtenir un certificat SSL gratuit pour Nginx sur Ubuntu 16.04 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. We recommend crée de nouveaux fichiers de bloc de serveur Nginx pour chaque domaine, car cela permet d'éviter certaines erreurs courantes et de conserver les fichiers par défaut comme configuration de secours comme prévu. Si vous souhaitez configurer SSL à l'aide du bloc de serveur par défaut, vous pouvez suivrethis Nginx + Let’s Encrypt tutorial à la place.
Conditions préalables
Pour suivre ce tutoriel, vous aurez besoin de:
-
Un serveur Ubuntu 16.04 configuré en suivant ce tutorielinitial server setup for Ubuntu 16.04, y compris un utilisateur sudo non root et un pare-feu.
-
Un nom de domaine entièrement enregistré. Ce didacticiel utilisera
example.com
partout. Vous pouvez acheter un nom de domaine surNamecheap, en obtenir un gratuitement surFreenom ou utiliser le registraire de domaine de votre choix. -
Les deux enregistrements DNS suivants sont configurés pour votre serveur. Vous pouvez suivrethis hostname tutorial 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.
-
-
Nginx installé en suivantHow To Install Nginx on Ubuntu 16.04.
-
Un fichier de blocage de serveur Nginx distinct pour votre domaine, configuré en suivantthis Nginx server blocks tutorial for Ubuntu 16.04. Ce tutoriel utilisera
/etc/nginx/sites-available/example.com
.
[[step-1 -—- Installing-certbot]] == É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 Ubuntu ont tendance à être obsolètes. Cependant, les développeurs de Certbot conservent un référentiel de logiciels Ubuntu avec des versions à jour, nous allons donc utiliser ce référentiel.
Tout d'abord, ajoutez le référentiel.
sudo add-apt-repository ppa:certbot/certbot
Vous devrez appuyer surENTER
pour accepter. Ensuite, mettez à jour la liste de packages pour récupérer les informations de package du nouveau référentiel.
sudo apt-get update
Et enfin, installez le package Nginx de Certbot avecapt-get
.
sudo apt-get install python-certbot-nginx
Certbot est maintenant prêt à être utilisé, mais pour configurer SSL pour Nginx, nous devons vérifier une partie de la configuration de Nginx.
[[step-2 -—- confirming-nginx-39-s-configuration]] == Étape 2 - Confirmation de la configuration de Nginx
Certbot doit pouvoir trouver le bon blocserver
dans votre configuration Nginx pour qu'il puisse configurer automatiquement SSL. Plus précisément, il le fait en recherchant une directiveserver_name
qui correspond au domaine pour lequel vous demandez un certificat.
Si vous avez suivi le didacticiel sur les prérequis surNginx server blocks, vous devriez avoir un bloc serveur pour votre domaine à/etc/nginx/sites-available/example.com
avec la directiveserver_name
déjà définie correctement.
Pour vérifier, ouvrez le fichier de blocage du serveur pour votre domaine en utilisantnano
ou votre éditeur de texte préféré.
sudo nano /etc/nginx/sites-available/example.com
Trouvez la ligneserver_name
existante. Ça devrait ressembler à ça:
/etc/nginx/sites-available/example.com
. . .
server_name example.com www.example.com;
. . .
Si tel est le cas, vous pouvez quitter votre éditeur et passer à 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 blocserver
correct et le mettre à jour.
Nous allons ensuite mettre à jour notre pare-feu pour autoriser le trafic HTTPS.
[[step-3 -—- allow-https-through-the-firewall]] == Étape 3 - Autoriser HTTPS à travers le pare-feu
Si le pare-feu deufw
est activé, comme recommandé par les guides des prérequis, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS. Heureusement, Nginx enregistre quelques profils avecufw
lors de l'installation.
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 ajouter du trafic HTTPS, nous pouvons autoriser le profil Nginx Full, puis supprimer la tolérance de profil HTTP Nginx redondant:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
Votre statut devrait ressembler à ceci maintenant:
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)
Nous sommes maintenant prêts à exécuter Certbot et à récupérer nos certificats.
[[step-4 -—- getting-an-ssl-certificate]] == Étape 4 - Obtention d'un certificat SSL
Certbot propose diverses méthodes pour obtenir des certificats SSL, via différents plugins. Le plugin Nginx se chargera de la reconfiguration de Nginx et du rechargement de la configuration chaque fois que nécessaire:
sudo certbot --nginx -d example.com -d www.example.com
Cela exécutecertbot
avec le plugin--nginx
, en utilisant-d
pour spécifier les noms pour lesquels nous aimerions que le certificat soit valide.
Si c'est la première fois que vous exécutezcertbot
, vous serez invité à saisir une adresse e-mail et à accepter les conditions d'utilisation. Après 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 surENTER
. La configuration sera mise à jour et Nginx se rechargera pour récupérer les nouveaux paramètres. certbot
se terminera par un message vous indiquant que le processus a réussi et où vos certificats sont stockés:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2017-10-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 à l'aide dehttps://
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 en utilisant lesSSL Labs Server Test, il obtiendra une noteA.
Terminons par tester le processus de renouvellement.
[[step-5 -—- verifying-certbot-auto-renew]] == É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 packagecertbot
que nous avons installé s'en charge pour nous 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 à sec aveccertbot
:
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 didacticiel, vous avez installé le client Let’s Encryptcertbot
, téléchargé des certificats SSL pour votre domaine, configuré Nginx pour utiliser ces certificats et configuré le renouvellement automatique des certificats. Si vous avez d'autres questions sur l'utilisation de Certbot,their documentation est un bon point de départ.