Comment sécuriser Apache avec Let’s Encrypt sur Ubuntu 16.04

introduction

Ce tutoriel va vous montrer comment configurer un certificat TLS / SSL à partir deLet’s Encrypt sur un serveur Ubuntu 16.04 exécutant Apache en tant que serveur Web.

Les certificats SSL sont utilisés dans les serveurs Web pour chiffrer le trafic entre le serveur et le client, offrant ainsi une sécurité supplémentaire aux utilisateurs accédant à votre application. Let Encrypt offre un moyen simple d’obtenir et d’installer des certificats sécurisés gratuitement.

Conditions préalables

Pour compléter ce guide, vous aurez besoin de:

  • Un serveur Ubuntu 16.04 avec un utilisateur non-root sudo, que vous pouvez configurer en suivant notre guideInitial Server Setup

  • Le serveur Web Apache installé avecone or more domain names correctement configuré via des hôtes virtuels qui spécifientServerName.

Lorsque vous êtes prêt à passer à autre chose, connectez-vous à votre serveur à l'aide de votre compte compatible sudo.

[[step-1 -—- install-the-let-39-s-encrypt-client]] == Étape 1 - Installer le client Let’s Encrypt

Les certificats Encrypt sont récupérés via le logiciel client exécuté sur votre serveur. Le client officiel s'appelle Certbot et ses développeurs gèrent leur propre référentiel logiciel Ubuntu avec des versions à jour. Étant donné le développement actif de Certbot, il est intéressant d’utiliser ce référentiel pour installer une version plus récente que celle fournie par Ubuntu par défaut.

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 des packages pour récupérer les informations de package du nouveau référentiel:

sudo apt-get update

Et enfin, installez Certbot à partir du nouveau référentiel avecapt-get:

sudo apt-get install python-certbot-apache

Le client Let’s Encrypt decertbot est maintenant prêt à être utilisé.

[[step-2 -—- set-up-the-ssl-certificate]] == Étape 2 - Configurer le certificat SSL

La génération du certificat SSL pour Apache à l'aide de Certbot est assez simple. Le client obtiendra et installera automatiquement un nouveau certificat SSL valide pour les domaines fournis en tant que paramètres.

Pour exécuter l'installation interactive et obtenir un certificat qui ne couvre qu'un seul domaine, exécutez la commandecertbot comme ceci, oùexample.com est votre domaine:

sudo certbot --apache -d example.com

Si vous souhaitez installer un seul certificat valide pour plusieurs domaines ou sous-domaines, vous pouvez le transmettre en tant que paramètres supplémentaires à la commande. Le premier nom de domaine dans la liste des paramètres sera le domainebase utilisé par Let's Encrypt pour créer le certificat, et pour cette raison, nous vous recommandons de transmettre le nom de domaine de premier niveau nu en premier dans la liste, suivi par tout sous-domaine ou alias supplémentaire:

sudo certbot --apache -d example.com -d www.example.com

Pour cet exemple, le domainebase seraexample.com.

Si vous avez plusieurs hôtes virtuels, vous devez exécutercertbot une fois pour chacun afin de générer un nouveau certificat pour chacun. Vous pouvez distribuer plusieurs domaines et sous-domaines sur vos hôtes virtuels de quelque manière que ce soit.

Une fois les dépendances installées, un guide pas à pas vous sera présenté pour personnaliser les options de votre certificat. Il vous sera demandé de fournir une adresse e-mail pour la récupération de clé perdue et les notifications, et vous pourrez choisir entre activer à la fois l'accèshttp ethttps ou forcer toutes les demandes à rediriger vershttps . Il est généralement plus sûr d'exigerhttps, sauf si vous avez un besoin spécifique de trafichttp non chiffré.

Lorsque l'installation est terminée, vous devriez pouvoir trouver les fichiers de certificat générés à/etc/letsencrypt/live. Vous pouvez vérifier l'état de votre certificat SSL avec le lien suivant (n'oubliez pas de remplacerexample.com par votre domainebase):

https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Vous devriez maintenant pouvoir accéder à votre site Web en utilisant le préfixehttps.

[[step-3 -—- verifying-certbot-auto-renew]] == Étape 3 - Vérification du renouvellement automatique de Certbot

Les certificats Encrypt ne durent que 90 jours. Cependant, le package certbot que nous avons installé s'en charge pour nous en exécutantcertbot renew deux fois par jour via un timer systemd. Sur les distributions non-systemd, cette fonctionnalité est fournie par un script cron placé dans/etc/cron.d. La tâche est exécutée deux fois par jour et renouvelle 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 Apache 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 guide, nous avons vu comment installer un certificat SSL gratuit de Let’s Encrypt afin de sécuriser un site Web hébergé avec Apache. Nous vous recommandons de vérifier lesLet’s Encrypt blog officiels pour les mises à jour importantes de temps en temps, et de lirethe Certbot documentation pour plus de détails sur le client Certbot.