Passer au contenu principal

Serveur dédié : Installer Certbot sur Linux

Ce guide a été créé avec les produits suivants :

(Les détails peuvent varier selon les produits de différents fournisseurs, mais les concepts principaux restent les mêmes)

Introduction

Les certificats SSL sont des éléments essentiels d’internet, garantissant que les données peuvent être transmises en toute sécurité entre le client et l’hôte. Dans ce guide, nous allons explorer le processus d’installation de l’outil open-source Certbot pour demander des certificats SSL gratuits auprès de l’autorité de certification à but non lucratif Let's Encrypt.

Préparation

Pour utiliser Certbot, vous aurez besoin d’un serveur Linux et d’un domaine que vous possédez. Vous devez avoir accès aux paramètres DNS du domaine et vous devez créer un enregistrement DNS A pointant vers l’adresse IP de votre serveur Linux pour chaque domaine racine ou sous-domaine que vous souhaitez utiliser.

Certbot propose aussi des plugins supplémentaires qui vous permettent d’installer un certificat en "un clic" pour un domaine, compatibles avec plusieurs serveurs web comme Nginx ou Apache. Nous recommandons d’utiliser Nginx, un serveur web open-source très performant et populaire. Consultez notre guide proxy inverse Linux pour vous aider à le configurer.

Installation

Commencez par installer le paquet open-source Certbot que vous utiliserez pour demander des certificats SSL gratuits auprès de Let's Encrypt.

sudo apt install certbot

Avec Certbot installé, vous pouvez maintenant demander des certificats pour vos domaines. Let's Encrypt et Certbot proposent plusieurs défis ACME pour vérifier la propriété du domaine.

Nous recommandons vivement d’utiliser la méthode par défaut HTTP-01 car elle permet un renouvellement automatique. Cependant, si vous rencontrez des problèmes, vous pouvez essayer la méthode DNS-01 en alternative, qui est manuelle et ne supporte pas le renouvellement automatique puisqu’elle repose sur la vérification via un enregistrement DNS TXT.

Utilise les plugins serveurs web

Pour ceux qui utilisent un serveur web comme Nginx, Apache ou leur propre serveur, on vous conseille de passer à la section Plugins serveurs web ci-dessous qui montre comment utiliser les plugins Certbot pour ces serveurs, permettant une installation "un clic" et la demande de certificats sans devoir arrêter le serveur web.

Défi HTTP-01

Avec Certbot installé, vous pouvez maintenant demander des certificats pour vos domaines. Ici, on utilise le mode standalone, ce qui signifie que Certbot va lancer un serveur web temporaire pour effectuer les actions nécessaires. Cela implique que vous devez ouvrir le port 80 dans votre pare-feu et ne pas avoir d’autres serveurs ou services utilisant ce port, afin que le serveur temporaire puisse démarrer et que le défi soit récupéré (d’où le nom HTTP dans le défi).

Dans la commande suivante, vous utiliserez le paramètre --standalone pour indiquer à Certbot que vous souhaitez utiliser le serveur temporaire.

# Pour les domaines racines
certbot certonly --standalone -d [votre_domaine_racine] -d www.[votre_domaine_racine]

# Pour les sous-domaines
certbot certonly --standalone -d [votre_domaine]

# Installation interactive
certbot certonly --standalone

Une fois la commande lancée, il se peut que vous deviez suivre une configuration interactive initiale vous demandant une adresse email pour la communication liée au certificat, une liste de diffusion optionnelle, ainsi que l’acceptation des conditions générales.

Certbot va alors générer un défi ACME et l’héberger via le serveur temporaire. Les serveurs de Let's Encrypt tenteront de récupérer ce défi depuis votre serveur et, en cas de succès, les certificats seront créés et sauvegardés dans le dossier /etc/letsencrypt/live/[votre_domaine].

Vous pouvez maintenant utiliser les certificats SSL où vous le souhaitez, en fournissant simplement le chemin local vers ces certificats.

Enregistrement DNS TXT

Si vous avez des difficultés à vérifier votre domaine via la méthode HTTP-01, vous pouvez essayer la méthode DNS-01 qui consiste à créer un enregistrement DNS TXT avec une valeur fournie par Let's Encrypt.

Comme mentionné, cette méthode ne supporte pas le renouvellement automatique à moins que vous ne mettiez en place votre propre infrastructure pour gérer cela. Il est donc fortement recommandé d’utiliser la méthode HTTP-01 quand c’est possible.

Dans la commande suivante, vous utiliserez le paramètre --preferred-challenges pour indiquer à Certbot que vous souhaitez utiliser la méthode DNS-01.

# Pour les domaines racines
certbot certonly --preferred-challenges dns-01 -d [votre_domaine_racine] -d www.[votre_domaine_racine] --manual -m [votre_domaine_racine] -m www.[votre_domaine_racine]

# Pour les sous-domaines
certbot certonly --preferred-challenges dns-01 -d [votre_domaine] --manual -m [votre_domaine]

# Installation interactive
certbot certonly --preferred-challenges dns-01

Une fois la commande lancée, vous devrez suivre une configuration interactive initiale vous demandant une adresse email pour la communication liée au certificat, une liste de diffusion optionnelle, ainsi que l’acceptation des conditions générales.

Certbot vous donnera alors les instructions pour créer un enregistrement DNS TXT avec une valeur spécifique à utiliser. La cible sera généralement _acme-challenge. préfixé à votre domaine (dans cet exemple, ce serait _acme-challenge.zapdocs.example.com) et la valeur à mettre sera indiquée dans la console.

Une fois l’enregistrement créé, appuyez sur Entrée pour continuer. Si tout est correct et propagé, les certificats seront créés et sauvegardés dans le dossier /etc/letsencrypt/live/[votre_domaine].

note

Soyez patient, les modifications des enregistrements DNS peuvent prendre un peu de temps à se propager. Cela se fait généralement en quelques minutes, mais dans de rares cas, cela peut prendre plus longtemps.

Vous pouvez maintenant utiliser les certificats SSL où vous le souhaitez, en fournissant simplement le chemin local vers ces certificats.

Plugins serveurs web

Certbot propose plusieurs plugins supplémentaires pour serveurs web qui facilitent encore plus la gestion des certificats, car ils modifient automatiquement les blocs serveur concernés. Pour utiliser un plugin, il suffit d’ajouter le paramètre correspondant à votre commande certbot.

Ces méthodes utilisent toutes la validation HTTP-01 et fonctionnent de manière similaire. Quand un plugin est utilisé, Certbot recherche d’abord le bloc serveur correspondant au domaine demandé dans le paramètre server_name. Une fois trouvé, Certbot génère un défi ACME et ajoute un bloc temporaire location /.well-known/acme-challenge/... dans la configuration du serveur.

Les serveurs de Let's Encrypt tenteront alors de récupérer ce défi depuis votre serveur et, en cas de succès, votre certificat sera généré. La configuration du bloc serveur sera automatiquement modifiée pour passer en HTTPS (port 443) et pour pointer vers les nouveaux certificats.

Plugin Nginx

Avant d’utiliser ce plugin, assurez-vous qu’il est installé.

sudo apt install python3-certbot-nginx

Pour utiliser le plugin Nginx, ajoutez le paramètre --nginx dans votre commande comme suit.

# Pour les domaines racines
certbot --nginx -d [votre_domaine_racine] -d www.[votre_domaine_racine]

# Pour les sous-domaines
certbot --nginx -d [votre_domaine]

# Installation interactive
certbot --nginx
astuce

Si vous souhaitez désactiver les modifications automatiques "un clic" des blocs serveur par Certbot, vous pouvez ajouter le paramètre certonly dans la commande, par exemple certbot certonly.

Renouvellement automatique

Dans la plupart des cas, Certbot configure automatiquement le renouvellement des certificats via un cronjob et/ou un timer systemd. Vous pouvez vérifier cela en lançant la commande suivante qui utilise le paramètre --dry-run pour tester le processus.

certbot renew --dry-run
astuce

Comme mentionné plus haut, la méthode DNS-01 ne supporte pas le renouvellement automatique via Certbot, sauf si vous mettez en place votre propre infrastructure pour gérer cela. Il est donc fortement recommandé d’utiliser la méthode HTTP-01.

Cette commande devrait réussir si tout est en ordre. Si vous souhaitez voir ou modifier le renouvellement automatique, la commande se trouve dans l’un des emplacements suivants : /etc/crontab/, /etc/cron.*/* ou via systemctl list-timers.

Configuration manuelle du cronjob

Si pour une raison quelconque le renouvellement automatique n’est pas configuré, vous pouvez l’ajouter vous-même via un cronjob. Ouvrez le menu crontab avec crontab -e. Si c’est la première fois, il vous sera demandé de choisir un éditeur. Sélectionnez la première option, généralement /bin/nano.

Avec le fichier ouvert dans nano, ajoutez simplement la ligne suivante pour lancer le renouvellement tous les jours à 6h du matin heure locale.

0 6 * * * certbot renew

Sauvegardez le fichier et quittez nano avec CTRL + X, puis Y pour confirmer, et enfin ENTRÉE.

Conclusion

Vous avez configuré avec succès Certbot pour vos domaines via plusieurs méthodes, que ce soit standalone, webroot ou via un des plugins, offrant à votre site une transmission de données sécurisée via HTTPS. Pour toute question ou aide, n’hésitez pas à contacter notre équipe support, disponible tous les jours pour vous aider ! 🙂