Comment sécuriser Apache avec Let's Encrypt sur Debian 11

De Get Docs
Aller à :navigation, rechercher

Introduction

Let's Encrypt est une autorité de certification (CA) qui permet d'obtenir et d'installer des certificats TLS/SSL gratuits, permettant ainsi le chiffrement HTTPS sur les serveurs Web. Il facilite le processus en fournissant un client logiciel, 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 Apache sur Debian 11 et configurerez votre certificat pour qu'il se renouvelle automatiquement.

Ce didacticiel utilisera un fichier d'hôte virtuel Apache distinct au lieu du fichier de configuration par défaut. Nous recommandons de créer de nouveaux fichiers d'hôte virtuel Apache pour chaque domaine, car cela permet d'éviter les erreurs courantes et de conserver les fichiers par défaut comme configuration de secours.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de :

Étape 1 - Installation de Certbot

La première étape pour utiliser Let's Encrypt pour obtenir un certificat SSL est d'installer le logiciel Certbot sur votre serveur.

Remarque : Ce tutoriel suit la recommandation de la documentation Certbot d'installer le logiciel sur Debian en utilisant snappy, un gestionnaire de paquets développé pour les systèmes Linux qui installe les paquets dans un format appelés snaps. Vous pouvez installer Certbot à partir des référentiels Debian par défaut en utilisant apt, mais cela installera une version plus ancienne (version 1.12.0) que le composant logiciel enfichable Certbot (version 1.29.0, la dernière version à ce jour).


Pour installer Certbot en un clin d'œil sur Debian, vous devez d'abord avoir snapd installé sur votre serveur. snapd est un démon requis pour installer, utiliser et gérer les snaps. Installation du snapd package installera également le snap commande sur votre serveur.

À installer snapd, mettez à jour votre index de packages local si vous ne l'avez pas fait récemment :

sudo apt update

Installez ensuite le snapd forfait:

sudo apt install snapd

Après avoir exécuté cette commande, vous serez invité à confirmer que vous souhaitez installer snapd et ses dépendances. Vous pouvez accepter en appuyant sur Y et alors ENTER.

Ensuite, utilisez le snap commande pour installer le core instantané. Cela installera certaines dépendances sur votre serveur qui sont nécessaires pour tout composant logiciel enfichable que vous installez, y compris le composant logiciel enfichable Certbot :

sudo snap install core

Ensuite, rafraîchissez le core instantané. Cela garantira que vous disposez des dernières versions de snapd et ses dépendances installées :

sudo snap refresh core

Notez que les snaps peuvent être installés sous l'un des trois niveaux de confinement qui offrent différents degrés d'isolation de votre système. Par exemple, la plupart des snaps sont installés sous le --strict niveau de confinement par défaut qui empêche ces programmes d'accéder aux fichiers ou au réseau de votre système. Étant donné que Certbot doit être autorisé à modifier certains fichiers de configuration afin de configurer correctement les certificats, cette commande inclut le --classic option. Ce niveau de confinement permet à tous les snaps installés sous celui-ci le même accès aux ressources système que les packages traditionnels.

Dans cet esprit, vous pouvez installer le certbot snap avec la commande suivante.

sudo snap install --classic certbot

Ce processus d'installation installera le certbot exécutable dans le /snap/bin/ annuaire. Créez un lien symbolique vers ce fichier dans le /usr/bin/ répertoire pour vous assurer que vous pouvez exécuter le certbot commande n'importe où sur votre système :

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Certbot est maintenant prêt à être utilisé, mais pour qu'il puisse configurer SSL pour Apache, vous devez vérifier que Apache a été configuré correctement.

Étape 2 - Configuration du certificat SSL

Certbot doit pouvoir trouver le bon hôte virtuel dans votre configuration Apache pour qu'il configure automatiquement SSL. Plus précisément, il le fait en recherchant un ServerName qui correspond au domaine pour lequel vous demandez un certificat.

Si vous avez suivi l'étape de configuration de l'hôte virtuel dans le didacticiel d'installation Apache , vous devriez avoir un VirtualHost bloquer pour votre domaine à /etc/apache2/sites-available/your_domain.conf avec le ServerName directive déjà définie de manière appropriée.

Pour vérifier, ouvrez le fichier d'hôte virtuel de votre domaine à l'aide de nano ou votre éditeur de texte préféré :

sudo nano /etc/apache2/sites-available/your_domain.conf

Retrouver l'existant ServerName ligne. Cela devrait ressembler à ce qui suit, avec votre propre nom de domaine au lieu de your_domain:

/etc/apache2/sites-available/votre_domaine.conf

...
ServerName your_domain;
...

Si ce n'est pas déjà fait, mettez à jour le ServerName directive pour pointer vers votre nom de domaine. Enregistrez ensuite le fichier et quittez votre éditeur. Si vous avez utilisé nano, faites-le en appuyant sur CTRL + X, Y, alors ENTER.

Ensuite, vérifiez la syntaxe de vos modifications de configuration :

sudo apache2ctl configtest

S'il n'y a pas d'erreurs de syntaxe, votre sortie renverra ce qui suit :

Output. . .
Syntax OK

Si vous obtenez une erreur, rouvrez le fichier de l'hôte virtuel et vérifiez s'il y a des fautes de frappe ou des caractères manquants. Une fois la syntaxe de votre fichier de configuration correcte, rechargez Apache pour charger la nouvelle configuration :

sudo systemctl reload apache2

Certbot peut maintenant trouver le bon VirtualHost bloquez-le et mettez-le à jour.

Ensuite, mettons à jour le pare-feu pour autoriser le trafic HTTPS.

Étape 3 - Autoriser HTTPS via le pare-feu

Si vous avez le ufw pare-feu activé, comme recommandé par le guide des prérequis, vous devrez ajuster les paramètres pour autoriser le trafic HTTPS. Heureusement, une fois installé sur Debian, ufw est livré avec quelques profils qui facilitent le processus de modification des règles de pare-feu pour le trafic HTTP et HTTPS.

Vous pouvez vérifier le paramètre actuel en exécutant :

sudo ufw status

Si vous avez suivi Étape 2 de notre guide sur Comment installer Apache sur Debian 11, le résultat de cette commande sera le suivant, indiquant que seul le trafic HTTP est autorisé vers le serveur Web:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW (v6)                   ALLOW       Anywhere (v6)

Pour autoriser le trafic HTTPS, autorisez le profil « WWW complet » et supprimez l'allocation de profil « WWW » redondante :

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

Votre statut devrait maintenant être le suivant :

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW Full                   ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW Full (v6)              ALLOW       Anywhere (v6)        

Ensuite, exécutons Certbot et récupérons nos certificats.

Étape 4 — Obtention d'un certificat SSL

Certbot propose différentes manières d'obtenir des certificats SSL via des plugins. Le plugin Apache se chargera de reconfigurer Apache et de recharger la configuration chaque fois que nécessaire. Pour utiliser ce plugin, exécutez ce qui suit :

sudo certbot --apache -d your_domain -d www.your_domain

Cela fonctionne certbot avec le --apache plug-in, utilisation -d pour spécifier les noms pour lesquels vous souhaitez que le certificat soit valide.

Si c'est la première fois que vous courez certbot, vous serez invité à saisir une adresse e-mail et à accepter les conditions d'utilisation. De plus, il vous demandera si vous êtes prêt à partager votre adresse e-mail avec la Electronic Frontier Foundation, une organisation à but non lucratif qui défend les droits numériques et qui est également le créateur de Certbot. N'hésitez pas à entrer Y pour partager votre adresse e-mail ou N à diminuer.

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, la configuration sera mise à jour automatiquement et Apache 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 :

OutputSuccessfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-10-31.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Successfully deployed certificate for www.your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 cadenas vert. Si vous testez votre serveur à l'aide du SSL Labs Server Test, il obtiendra une note A.

Terminons en testant le processus de renouvellement.

Étape 5 - Vérification du renouvellement automatique de Certbot

Les certificats Let's Encrypt ne sont valables que pendant quatre-vingt-dix jours. Il s'agit d'encourager les utilisateurs à automatiser leur processus de renouvellement de certificat. La certbot package que vous avez installé s'en charge pour vous en ajoutant un script de renouvellement à /etc/cron.d. Ce script s'exécute deux fois par jour et renouvellera automatiquement tout certificat dans les trente jours suivant son expiration.

Pour tester le processus de renouvellement, vous pouvez faire un essai avec certbot:

sudo certbot renew --dry-run

Si vous ne recevez aucune erreur, vous êtes prêt. Si nécessaire, Certbot renouvellera vos certificats et rechargera Apache pour prendre en compte les modifications. Si le processus de renouvellement automatisé échoue, Let's Encrypt enverra un message à l'e-mail que vous avez spécifié, vous avertissant 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é Apache pour utiliser ces certificats et configuré le renouvellement automatique des certificats. Si vous avez d'autres questions sur l'utilisation de Certbot, leur documentation est un bon point de départ.