Comment sécuriser Apache avec Let’s Encrypt sur Ubuntu/Debian

Sécuriser Apache avec Let’s Encrypt sur Ubuntu/Debian

Introduction

Let’s Encrypt est une autorité de certification (CA) qui offre un moyen facile d’obtenir et d’installer des certificats TLS/SSL gratuits, permettant aux serveurs Web d’utiliser HTTPS crypté. Il simplifie le processus en incluant Certbot, un client logiciel qui vise à automatiser la plupart ou la totalité des tâches nécessaires.

Pour l’instant, toute la procédure d’acquisition et d’installation des certificats est totalement automatisée sur Apache et Nginx.

Dans ce guide, vous utiliserez Certbot pour obtenir un certificat SSL gratuit pour Apache sur Ubuntu/Debian et configurer votre certificat pour qu’il soit automatiquement renouvelé.

Ce guide utilisera un fichier hôte virtuel séparé pour Apache au lieu du fichier de configuration par défaut. Nous vous recommandons de créer de nouveaux fichiers hôtes virtuels Apache pour chaque domaine, car cela permet d’éviter des erreurs généralisées et maintient les fichiers par défaut comme configuration de secours.

Prérequis

  • Un serveur Ubuntu/Debian configuré, ainsi qu’un utilisateur non root avec un pare-feu et des privilèges sudo.
  • Un nom de domaine entièrement enregistré. Dans ce guide, nous utiliserons your_domain comme exemple tout au long.
  • Ces deux enregistrements DNS configurés pour votre serveur. 
    • Un enregistrement A avec your_domain qui pointe vers l’adresse IP publique de votre serveur.
    • Un enregistrement A avec www.your_domain qui pointe vers l’adresse IP publique de votre serveur.
  • Apache installé. Assurez-vous que vous disposez déjà d’un fichier d’hôte virtuel configuré pour votre domaine. Ce tutoriel utilisera /etc/apache2/sites-available/your_domain.conf comme exemple.

Étape 1 – Installation de Certbot avec Snap

Les snaps peuvent être utilisés sur toutes les principales distributions Linux, y compris Ubuntu, Linux Mint, Debian et Fedora.

Snap est préinstallé sur Ubuntu 16 et plus tard. Pour confirmer que vous disposez de la version la plus récente de snapd, exécutez ces commandes.

$ sudo snap install core; sudo snap refresh core

Pour installer Certbot, utilisez cette commande sur la ligne de commande de la machine.

$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Étape 2 – Configurez le Certificat SSL

Certbot doit être capable de trouver le bon hôte virtuel dans votre configuration Apache afin de pouvoir configurer SSL automatiquement.

Vous êtes sensés disposer d’un bloc VirtualHost pour votre domaine sur /etc/apache2/sites-available/your_domain.conf avec la commande ServerName correctement définie.

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

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

Recherchez la ligne ServerName déjà existante. Ce sera similaire à ceci mais avec votre nom de domaine au lieu de your_domain:

...
ServerName your_domain;
...

Si vous ne l’avez pas déjà fait, mettez à jour la directive ServerName pour qu’elle pointe vers le domaine.

Continuez et vérifiez la syntaxe de vos modifications de configuration :

$ sudo apache2ctl configtest

Vous verrez l’output ci-dessous s’il n’y a pas d’erreurs de syntaxe :

Output:
Syntax OK

Si vous obtenez une erreur, rouvrez le fichier hôte virtuel et recherchez les fautes de frappe ou les caractères manquants. Une fois la syntaxe de votre fichier de configuration correcte, actualisez Apache pour charger la nouvelle configuration :

$ sudo systemctl reload apache2

Certbot est maintenant en mesure de trouver le bon bloc VirtualHost et d’y appliquer une mise à jour.

Étape 3 – Autorisez HTTPS à Travers le Pare-Feu

Si votre pare-feu ufw est activé, vous devrez modifier les paramètres pour activer le trafic HTTPS. Heureusement, ufw est livré dans un package avec quelques profils qui aident à simplifier le processus de modification des règles.

Il est possible de visualiser le réglage actuel en tapant la commande suivante :

$ sudo ufw status
Output:
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW (v6)                   ALLOW       Anywhere (v6)

Pour ajouter du trafic HTTPS, activez le profil « WWW Full » et supprimez l’allocation de profil “WWW” répétée :

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

Votre statut devrait maintenant être semblable à celui-ci :

$ sudo ufw status
Output:
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW Full                   ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW Full (v6)              ALLOW       Anywhere (v6)

Étape 4 — Obtenir un certificat SSL

Certbot met à disposition un large éventail de moyens pour obtenir des certificats SSL via des plugins. Le plugin Apache prend soin de refaire la configuration Apache et de la recharger chaque fois que nécessaire. Pour utiliser ce plugin, tapez cette commande :

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

Ceci permet à certbot de fonctionner avec le plugin --apache, tout en utilisant -d pour être spécifique sur les noms dont vous souhaitez que le certificat soit valide.

Si vous exécutez certbot pour la première fois, il vous sera demandé d’entrer une adresse e-mail et d’accepter les conditions de service. Il vous sera également demandé si vous souhaitez partager votre adresse e-mail avec l’Electronic Frontier Foundation, un organisme à but non lucratif qui défend les droits numériques et il se trouve également être le fabricant de Certbot. Vous êtes libre d’entrer Y pour partager votre adresse e-mail ou N si vous ne le souhaitez pas.

Une fois cela fait, certbot interagira avec le serveur Let’s Encrypt, puis exécutera un test pour s’assurer que vous contrôlez le domaine dont vous demandez le certificat.

Si cela fonctionne, certbot vous demandera comment configurer les paramètres de votre HTTPS :

Output:
Please 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 l’option qui vous convient et appuyez sur ENTRÉE. La configuration sera alors mise à jour automatiquement et Apache sera rechargé pour intégrer les paramètres choisis.

Certbot conclura avec une note vous indiquant que le processus a été réussi et vous montrera où vos certificats ont été stockés :

Output:
IMPORTANT NOTES:
— Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2019-10-20. 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 ont été téléchargés, installés et chargés. Rechargez votre site Web avec https:// et faites attention à l’indicateur de sécurité de votre navigateur. Il devrait montrer, habituellement avec une icône de serrure verte, que le site est bien sécurisé. Si vous utilisez le test SSL Labs Serever pour tester votre serveur, il obtiendra une note A.

Étape 5 — Vérifier le renouvellement automatique de Certbot

La validité des certificats Let’s Encrypt est de 90 jours seulement afin d’encourager les utilisateurs à rendre automatique leur processus de renouvellement de certificat. Le paquet certbot que nous avons installé s’en occupe lui-même en ajoutant un script de renouvellement à /etc/cron.d. qui s’exécute deux fois par jour et renouvelle automatiquement tout certificat qui est dans les 30 jours de l’expiration.

Pour lancer un test sur le processus de renouvellement, faites un dry run en utilisant certbot :

$ sudo certbot renew --dry-run

Vous êtes prêt si vous ne voyez aucune erreur. Certbot s’assurera de renouveler vos certificats et de recharger Apache pour intégrer les paramètres mis à jour si nécessaire. En cas d’échec du processus de renouvellement automatisé, Let’s Encrypt enverra un message au courriel que vous avez déjà envoyé pour vous avertir que votre certificat expirera bientôt.

Conclusion

Dans ce guide, vous avez installé le certbot client Let’s Encrypt, téléchargé les certificats SSL pour votre domaine, configuré la configuration Apache pour les utiliser et configuré pour que le certificat se renouvelle automatiquement. Si vous avez encore des questions concernant l’utilisation de Certbot, vous pouvez consulter leur documentation où vous trouverez ce que vous devez savoir pour commencer.

Obtenez un SSL moins cher auprès de tous les fournisseurs SSL connus.

Laisser un commentaire