À Nous la ScienceCulture & éducation scientifique Nous écrire

Univers & matière

Espace & astronomiePhysique & quantiqueTerre & géosciencesMathématiques

Le vivant

Biologie & génétiqueSanté & médecineCerveau & psychologie

Planète & tech

Climat & environnementÉnergieIA & numériqueTechnologies & innovation

Sciences & société

Histoire des sciencesSciences & sociétéÀ proposContact Nous écrire
IA & numérique

Installer un certificat SSL Ubuntu avec Let’s Encrypt et Certbot

2 avril 202617 min de lecture

Installer un certificat SSL Ubuntu avec Let’s Encrypt et Certbot

Pour installer un certificat SSL Ubuntu avec Let’s Encrypt, le domaine doit déjà pointer vers l’adresse IP publique du serveur et le port HTTP 80 doit être joignable. Sur Ubuntu 20.04 avec Apache, Certbot demande le certificat, configure HTTPS et peut mettre en place la redirection depuis HTTP vers HTTPS.

Ce tutoriel cible Ubuntu 20.04 amd64, Apache 2.4.x et le paquet Certbot disponible via APT. La procédure suit un ordre simple : vérifier le domaine et le pare-feu, préparer Apache, installer Certbot, demander le certificat, contrôler le service puis tester le renouvellement.

Sommaire

En bref

🔒 Let’s Encrypt est une autorité de certification qui délivre des certificats reconnus par les navigateurs. Un certificat valide active HTTPS, mais ne remplace ni les mises à jour du serveur ni une configuration applicative sûre.

🌐 La validation HTTP utilisée par Certbot exige que le nom de domaine résolve vers le serveur et que le port 80 soit accessible depuis Internet.

⚙️ Sur la séquence Apache décrite ici, le paquet letsencrypt installe Certbot et le module python3-certbot-apache permet la configuration automatique d’Apache.

🔁 Le contrôle utile n’est pas seulement l’émission du certificat : exécutez aussi sudo certbot renew --dry-run pour simuler le renouvellement.

Vérification finale du certificat SSL

Cochez chaque contrôle avant de considérer la configuration HTTPS comme terminée.

Éléments de la liste :

  • Vérifier la résolution du domaine — Le domaine et les sous-domaines concernés pointent vers l’adresse IP publique du serveur.
  • Contrôler les ports 80 et 443 — Le port 80 est joignable pour la validation et le port 443 accepte les connexions HTTPS.
  • Sauvegarder la configuration web — Les fichiers de configuration Apache ou Nginx ont été sauvegardés avant modification.
  • Vérifier le service web — Apache ou Nginx fonctionne et sa configuration est valide avant la demande de certificat.
  • Tester l’adresse HTTPS — Le navigateur ouvre le domaine en HTTPS sans avertissement et le certificat couvre le bon nom.
  • Contrôler la redirection HTTP — Les requêtes HTTP sont redirigées vers HTTPS lorsque cette redirection est souhaitée.
  • Simuler le renouvellement — La commande sudo certbot renew –dry-run se termine sans erreur.
  • Protéger la clé privée — Les fichiers sensibles du certificat restent accessibles uniquement aux comptes autorisés.

Cette liste ne remplace pas un audit de sécurité : HTTPS ne corrige pas une application vulnérable ni un serveur non mis à jour.


Qu’est-ce qu’un certificat SSL Let’s Encrypt sur Ubuntu ?

Un certificat SSL Let’s Encrypt est un certificat TLS signé par une autorité de certification reconnue, installé sur un serveur Ubuntu pour authentifier un nom de domaine et chiffrer les échanges HTTPS. Certbot est l’outil qui automatise la demande, l’installation et le renouvellement du certificat sur un serveur web compatible.

HTTPS protège la transmission entre le navigateur et le serveur pour la connexion concernée. HTTPS ne corrige pas une application vulnérable, un mot de passe exposé ou un serveur non mis à jour. Le certificat reste une brique de sécurité, pas une garantie générale contre toutes les attaques.

Un certificat Let’s Encrypt est pertinent pour un site public ; un certificat auto-signé provoque généralement un avertissement dans le navigateur.

Pourquoi la validation du domaine est-elle nécessaire ?

Let’s Encrypt doit vérifier que la personne qui demande le certificat contrôle réellement le domaine. Dans la procédure HTTP, Certbot effectue cette vérification via le port 80. Un enregistrement DNS erroné, une redirection vers un autre serveur ou un pare-feu externe bloquant HTTP empêche donc l’émission du certificat.

Apache, Nginx et le mode autonome : quelle méthode choisir ?

Le tutoriel exécutable ci-dessous concerne Apache, car la séquence fournie pour Ubuntu 20.04 documente le module python3-certbot-apache. Le mode autonome de Certbot est une alternative pour obtenir le certificat sans configuration automatique du serveur web, mais il doit pouvoir utiliser le port 80 pendant la validation.

Méthode Usage Limite à connaître
Certbot avec Apache Demander et configurer le certificat dans Apache Procédure décrite ici pour Ubuntu 20.04
Certbot en mode autonome Obtenir un certificat sans plugin Apache Le port 80 doit être disponible pour Certbot
Certbot avec Nginx Configurer un serveur Nginx Les commandes exactes Nginx ne sont pas couvertes par cette procédure Apache

Quels prérequis vérifier avant d’installer Certbot sur Ubuntu ?

Avant d’installer Certbot Ubuntu, vérifiez quatre points : un accès administrateur avec sudo, un domaine résolu vers le serveur, Apache présent et des règles réseau autorisant HTTP et HTTPS. La demande de certificat échoue souvent avant même le lancement de Certbot lorsque le DNS ou le port 80 ne correspondent pas au serveur visé.

Le serveur doit répondre au nom de domaine demandé, par exemple exemple.fr. Remplacez systématiquement domain-name.com dans les commandes par votre domaine réel avant leur exécution. N’utilisez pas l’adresse IP du serveur à la place d’un nom de domaine pour cette demande Let’s Encrypt.

  • Un utilisateur pouvant exécuter des commandes avec sudo.
  • Un enregistrement DNS public du domaine vers l’adresse IP du serveur.
  • Apache installé ou à installer selon l’étape suivante.
  • Les ports 80 et 443 autorisés par UFW et par le pare-feu du fournisseur d’hébergement, si ce dernier existe.

Contrôler les accès locaux

sudo -v
apache2 -v
sudo ufw status

La commande sudo -v ne doit pas retourner d’erreur de droits. La commande apache2 -v affiche la version d’Apache si le serveur web est déjà installé ; si Apache est absent, l’étape 1 l’installera.

Vérifier le DNS avant la demande

getent hosts domain-name.com

La sortie doit contenir l’adresse IP publique attendue pour le serveur. Une réponse différente signale un DNS non propagé, un ancien enregistrement ou un domaine dirigé vers une autre machine ; corrigez ce point avant de lancer Certbot.

La vérification d’un nom de domaine est aussi une question de fiabilité documentaire : une adresse trompeuse ou un faux portail peut conduire à communiquer des identifiants au mauvais service. Les réflexes présentés dans éviter les faux sites restent utiles lorsqu’un nom de domaine change ou semble douteux.

Comment installer le certificat SSL Let’s Encrypt sur Apache : les étapes ?

Pour installer un certificat SSL Let’s Encrypt sur Apache sous Ubuntu 20.04, préparez d’abord Apache et le pare-feu, puis installez Certbot et son module Apache. La commande Certbot demande ensuite le certificat pour le domaine fourni et configure Apache ; un contrôle de syntaxe et un test HTTPS confirment le résultat.

Cette méthode utilise le paquet letsencrypt indiqué pour l’environnement ciblé. Ne mélangez pas cette séquence avec un guide prévu pour une autre version d’Ubuntu ou un autre serveur web. Les noms de paquets et les mécanismes de renouvellement peuvent changer selon la distribution.

Schéma des étapes Certbot pour installer HTTPS sur Apache Ubuntu
Le certificat Let’s Encrypt est demandé après le contrôle du domaine, de l’accès HTTP et de la configuration Apache.

Étape 1 : mettre à jour Ubuntu et installer Apache

Exécutez cette commande dans un terminal connecté au serveur Ubuntu 20.04. La mise à jour de l’index APT précède l’installation d’Apache afin que le gestionnaire de paquets utilise la liste de logiciels disponible sur le système.

sudo apt update
sudo apt install apache2

Vérifiez ensuite qu’Apache est installé. Le résultat attendu est une ligne indiquant la version d’Apache, sans message indiquant que la commande est introuvable.

apache2 -v

Étape 2 : autoriser HTTP et HTTPS dans UFW

Autorisez le profil Apache complet dans UFW si ce pare-feu est utilisé sur le serveur. Cette règle ouvre HTTP et HTTPS sans désactiver la protection réseau ; elle ne dispense pas de vérifier aussi les règles réseau définies chez l’hébergeur.

sudo ufw allow "Apache Full"

Contrôlez les règles actives après l’ajout. La sortie doit faire apparaître une règle Apache Full ou des autorisations correspondant aux ports HTTP et HTTPS.

sudo ufw status

Étape 3 : activer SSL dans Apache

Activez le module SSL d’Apache puis redémarrez le service pour charger ce changement. Cette étape prépare Apache à écouter et servir des connexions HTTPS ; elle ne demande pas encore de certificat Let’s Encrypt.

sudo a2enmod ssl
sudo systemctl restart apache2

Le statut attendu est active (running). Si Apache ne démarre pas, n’exécutez pas Certbot avant d’avoir lu l’erreur de configuration affichée par le service.

sudo systemctl status apache2

Étape 4 : installer Certbot et le module Apache

Installez d’abord Certbot, puis le module qui permet à Certbot d’interagir avec Apache. Les deux commandes doivent être exécutées sur le serveur qui héberge le domaine ; elles ne s’exécutent pas depuis un poste local sans accès à l’instance Ubuntu.

sudo apt install letsencrypt
sudo apt install python3-certbot-apache

Vérifiez que le programmateur fourni avec Certbot est actif. Un timer actif ne prouve pas encore que chaque futur renouvellement réussira, mais il confirme que le mécanisme planifié existe sur le système.

sudo systemctl status certbot.timer

Étape 5 : demander et installer le certificat Apache

Demandez le certificat pour le domaine public en remplaçant domain-name.com. Certbot contacte Let’s Encrypt, vérifie le contrôle du domaine via HTTP, puis propose la configuration HTTPS dans Apache lorsque la validation aboutit.

sudo certbot --apache --agree-tos --preferred-challenges http -d domain-name.com

Suivez les questions affichées dans le terminal et choisissez la redirection HTTP vers HTTPS lorsqu’elle est proposée et adaptée à votre site. La redirection doit être vérifiée après l’émission du certificat, car une redirection mal configurée peut rendre une page inaccessible.

Étape 6 : contrôler la configuration Apache et le port 443

Testez la syntaxe d’Apache avant toute recherche de panne plus complexe. Ensuite, contrôlez que le service fonctionne et qu’un processus écoute bien sur le port HTTPS 443.

sudo apachectl configtest
sudo systemctl status apache2
sudo ss -tlnp | grep 443

Le premier contrôle doit retourner Syntax OK. Le second doit indiquer un service Apache actif, tandis que le troisième doit afficher une écoute sur le port 443.

Étape 7 : tester le site et le renouvellement automatique

Ouvrez https://domain-name.com dans un navigateur et vérifiez l’absence d’avertissement de certificat. Testez ensuite le renouvellement sans modifier le certificat actif : la simulation confirme que Certbot peut exécuter son cycle de renouvellement dans les conditions actuelles.

sudo certbot renew --dry-run

La commande de simulation doit se terminer sans erreur de validation ou de configuration. Si elle échoue, corrigez l’erreur maintenant plutôt que d’attendre l’approche de l’expiration.

Le bon test final associe trois contrôles : HTTPS dans un navigateur, Apache actif et renouvellement simulé sans erreur.

Comment vérifier qu’un certificat SSL Ubuntu fonctionne réellement ?

Un certificat SSL Ubuntu fonctionne réellement lorsque le navigateur établit une connexion HTTPS sans alerte, qu’Apache écoute sur le port 443 et que Certbot peut simuler un renouvellement. Ces contrôles vérifient des couches différentes : le navigateur teste l’usage public, Apache teste le service local et Certbot teste la continuité du certificat.

Étapes Certbot pour installer un certificat SSL Let’s Encrypt sur Ubuntu avec Apache.
La procédure suit sept étapes, du paramétrage Apache au test de renouvellement simulé.

Le navigateur constitue le test le plus proche de l’expérience utilisateur. Le terminal reste nécessaire pour distinguer un défaut de certificat d’une erreur Apache, DNS ou pare-feu.

  • Accédez à https://domain-name.com et inspectez les informations du certificat dans le navigateur.
  • Vérifiez la syntaxe Apache avec sudo apachectl configtest.
  • Vérifiez l’écoute HTTPS avec sudo ss -tlnp | grep 443.
  • Simulez le renouvellement avec sudo certbot renew --dry-run.

Contrôler les fichiers du certificat

Après une demande réussie, Certbot indique dans le terminal l’emplacement des fichiers créés. La procédure fournie permet aussi de vérifier la présence du fichier de chaîne complète dans le répertoire associé au domaine.

ls /etc/letsencrypt/live/domain-name.com/fullchain.pem

Le résultat attendu est l’affichage du chemin du fichier. Une absence de fichier signifie que la demande n’a pas produit le certificat attendu ou que le nom de domaine utilisé dans le chemin ne correspond pas au nom demandé.

Renouvellement automatique du certificat SSL : que contrôler ?

Le renouvellement automatique d’un certificat SSL dépend du timer Certbot et de la possibilité de renouveler le certificat au moment prévu. Sur Ubuntu 20.04, vérifiez le service certbot.timer, puis lancez un renouvellement simulé : cette seconde vérification détecte les problèmes de DNS, de port HTTP ou de configuration avant une expiration réelle.

La validité exacte des certificats et les conditions de renouvellement doivent être contrôlées dans la documentation Let’s Encrypt lors d’une mise en production. Un timer actif est utile, mais seul le test renew --dry-run vérifie que le mécanisme peut s’exécuter dans l’état actuel du serveur.

sudo systemctl status certbot.timer
sudo certbot renew --dry-run

Si le timer est absent ou inactif, ne créez pas un cron improvisé sans comprendre l’installation Certbot présente sur le serveur. Vérifiez d’abord le paquet installé, le journal systemd et la documentation officielle de Certbot correspondant à votre version d’Ubuntu.

Certbot avec Apache, Nginx ou mode autonome : quelle alternative retenir ?

Certbot avec Apache convient au serveur Apache 2.4.x ciblé par ce guide, car le plugin documenté peut installer la configuration HTTPS. Certbot avec Nginx est une solution distincte pour un serveur Nginx, tandis que le mode autonome sert surtout à obtenir le certificat lorsque Certbot peut temporairement répondre sur le port 80.

Le mécanisme de validation reste comparable, mais les fichiers de configuration et le plugin changent. Un serveur Nginx ne doit pas recevoir les commandes du plugin Apache, même si le domaine et le certificat Let’s Encrypt sont les mêmes.

Environnement Choix prudent Décision pratique
Apache sur Ubuntu 20.04 Plugin Apache Utiliser la commande certbot --apache de ce guide
Nginx Documentation Certbot adaptée à Nginx Ne pas reprendre les fichiers ni le plugin Apache
Service sans plugin web Mode autonome Prévoir l’accès temporaire de Certbot au port 80

Pour une installation sur une autre distribution, les commandes APT et les services peuvent différer. Un guide de la distribution Manjaro rappelle pourquoi les procédures d’administration doivent rester liées à leur système cible plutôt que copiées d’un environnement à l’autre.

Erreurs fréquentes lors de l’installation d’un certificat SSL Ubuntu

Les échecs Certbot les plus fréquents concernent le domaine, l’accessibilité du port 80, la syntaxe Apache ou le renouvellement. Chaque symptôme a un mécanisme précis : lire le message d’erreur puis vérifier l’élément concerné évite de modifier au hasard le pare-feu ou la configuration du site.

Apache et Certbot doivent rester actifs et cohérents avec le domaine demandé. Ne désactivez pas UFW, ne contournez pas la vérification TLS et ne donnez pas de permissions larges aux clés privées pour faire disparaître une erreur.

Symptôme Cause probable Action de vérification
Échec de validation HTTP DNS erroné ou port 80 inaccessible Contrôler getent hosts, UFW et le pare-feu de l’hébergeur
Apache ne redémarre pas Erreur dans la configuration Lancer sudo apachectl configtest avant un nouveau redémarrage
HTTPS affiche encore une erreur Site non rechargé ou mauvais hôte virtuel Vérifier Apache actif et l’écoute sur 443
Renouvellement simulé en erreur Timer, réseau ou validation indisponible Consulter certbot.timer et relire l’erreur de renew --dry-run

Le domaine ne pointe pas vers le serveur

Le challenge HTTP ne peut pas réussir si le domaine renvoie vers une autre adresse IP. Comparez la sortie de getent hosts domain-name.com avec l’adresse publique configurée chez l’hébergeur, puis attendez la propagation DNS nécessaire après une modification.

Le port 80 est bloqué

Le port 80 est nécessaire à la validation HTTP utilisée dans cette procédure, même si l’objectif final est de rediriger les visiteurs vers HTTPS. Vérifiez UFW avec sudo ufw status, puis les règles réseau externes ; n’ouvrez pas plus de ports que nécessaire.

Apache contient une erreur de syntaxe

Un fichier d’hôte virtuel mal fermé ou une directive invalide peut empêcher Apache de redémarrer après l’installation. Exécutez sudo apachectl configtest, corrigez la ligne signalée, puis relancez le contrôle avant de recharger le service.

Le renouvellement automatique échoue

Un renouvellement peut échouer si le service planifié est inactif ou si la validation du domaine ne passe plus. Lancez sudo certbot renew --dry-run et conservez le message d’erreur complet : il indique généralement si la cause concerne le réseau, le nom de domaine ou Apache.

Sources utiles à consulter

La documentation de Certbot et de Let’s Encrypt reste le repère à privilégier lorsque vous changez de version d’Ubuntu, de serveur web ou de méthode de validation. Les paquets, plugins et services systemd peuvent évoluer ; une commande exacte doit rester associée à son environnement.

  • Documentation Let’s Encrypt : conditions de délivrance et méthodes de validation à vérifier avant une mise en production.
  • Documentation Certbot : plugins disponibles, chemins de certificats et procédures de renouvellement.
  • Documentation Apache HTTP Server : diagnostic des hôtes virtuels et directives HTTPS.
  • Documentation Ubuntu : gestion APT, UFW et services systemd sur la version réellement installée.

À retenir

  • 🔒 Le domaine doit résoudre vers le serveur avant toute demande Let’s Encrypt.
  • 🌐 Le port 80 reste nécessaire à la validation HTTP de Certbot.
  • ⚙️ Le plugin Apache automatise l’installation HTTPS sur l’environnement ciblé.
  • 🔍 apachectl configtest évite de recharger Apache avec une syntaxe invalide.
  • 🔁 certbot renew --dry-run teste le renouvellement sans attendre l’expiration.

Questions fréquentes sur Certbot et Let’s Encrypt

Let’s Encrypt est-il gratuit ?

Let’s Encrypt délivre des certificats sans frais de certificat dans le cadre de son service. Des coûts peuvent toutefois exister pour le serveur, le nom de domaine ou une prestation d’administration. Vérifiez les conditions en vigueur sur le site officiel de Let’s Encrypt.

Peut-on installer plusieurs domaines avec Certbot ?

Certbot peut demander des certificats pour plusieurs noms de domaine selon la commande et la validation choisies. Chaque nom doit être contrôlé et résolu correctement. Vérifiez la syntaxe correspondant à votre version de Certbot dans sa documentation officielle avant de modifier une installation existante.

Pourquoi le port 80 est-il nécessaire si le site doit être en HTTPS ?

La méthode HTTP utilisée ici permet à Let’s Encrypt de vérifier le contrôle du domaine via le port 80. Après l’installation, Apache peut rediriger les visiteurs HTTP vers HTTPS. Le port 80 ne doit donc pas être supprimé sans avoir choisi et vérifié une autre méthode de validation.

Comment savoir si le renouvellement est prêt ?

Contrôlez d’abord le statut de certbot.timer, puis exécutez sudo certbot renew --dry-run. La simulation est le test pratique le plus utile, car elle vérifie la capacité de Certbot à renouveler sans modifier le certificat de production.

Faut-il utiliser un certificat auto-signé à la place de Let’s Encrypt ?

Un certificat auto-signé peut servir dans un environnement interne contrôlé, mais les navigateurs ne le reconnaissent pas comme émis par une autorité publique. Pour un site public, un certificat Let’s Encrypt évite cet avertissement lorsque le domaine est correctement validé.

Avertissement de compatibilité : cette procédure cible précisément Ubuntu 20.04 amd64, Apache 2.4.x et Certbot installé depuis le paquet APT indiqué. Rejouez intégralement la procédure sur une machine vierge ou un environnement de préproduction avant toute mise en production, puis vérifiez la documentation officielle si votre version d’Ubuntu, Apache ou Certbot diffère.

Version PDF à téléchargerEmportez l'essentiel de cet article au format PDF.

Télécharger le PDF

Laisser un commentaire