Installer un certificat SSL gratuit avec Let's Encrypt et Certbot
Certificat SSL gratuit pour votre serveur Linux : voici comment installer Certbot sous Debian et Ubuntu, émettre un certificat Let's Encrypt pour Apache et le faire renouveler automatiquement.
Un certificat SSL de Let's Encrypt ne coûte rien, se met en place en quelques minutes et il est accepté par tous les navigateurs courants. Dans ce guide, vous activez HTTPS sur votre propre serveur Linux avec Apache : sous Debian 13, Debian 12, Ubuntu 24.04 LTS et Ubuntu 22.04 LTS.
L'émission du certificat est assurée par Certbot, le client ACME officiel de l'Electronic Frontier Foundation. Certbot demande le certificat, l'inscrit dans la configuration Apache, puis le renouvelle ensuite tout seul grâce à un timer systemd.
Prérequis
- Un domaine dont l'enregistrement A (et en IPv6 également l'enregistrement AAAA) pointe vers votre vServer ou votre serveur root.
- Un serveur web Apache2 en fonctionnement, avec un VirtualHost pour ce domaine.
- Un accès root via SSH.
- Le port 80 et le port 443 doivent être joignables depuis l'extérieur. Let's Encrypt vérifie le domaine via le port 80.
Vérifiez d'abord que le domaine pointe réellement vers votre serveur. Saisissez pour cela votre domaine sur https://check-host.net/. Si l'adresse IP de votre serveur y apparaît, vous pouvez continuer. Si le DNS pointe encore vers une ancienne cible, attendez la mise à jour, sinon l'émission échouera.
Mettre le système à jour
Commencez par actualiser la liste des paquets ainsi que les paquets installés :
apt update && apt upgrade -y
Installer Certbot
Il existe deux voies habituelles. Le paquet de la distribution est la plus simple et suffit largement pour la plupart des serveurs. Le paquet Snap fournit toujours la version la plus récente de Certbot et il est officiellement recommandé par l'Electronic Frontier Foundation.
Variante 1 : Certbot depuis le dépôt de la distribution
Sous Debian et Ubuntu, Certbot et le plugin Apache se trouvent directement dans les sources de paquets :
apt install certbot python3-certbot-apache -y
Le paquet « python-certbot-apache », autrefois très répandu, appartenait à Python 2 et n'existe plus. Sur toutes les versions actuelles de Debian et d'Ubuntu, le nom de paquet correct est « python3-certbot-apache ».
Variante 2 : installer Certbot via snap
Si vous souhaitez disposer à chaque fois de la version la plus récente de Certbot, par exemple pour les plugins DNS ou les certificats wildcard, installez Certbot sous forme de Snap. Supprimez auparavant une éventuelle installation par paquet, afin que les deux ne se marchent pas dessus :
apt remove certbot -y
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
Émettre le certificat et l'intégrer à Apache
La voie la plus rapide passe par le plugin Apache. Certbot lit les VirtualHosts existants, demande le certificat et écrit lui-même la configuration SSL adaptée :
certbot --apache -d MonDomaine.fr -d www.MonDomaine.fr
Si vous préférez garder la main sur la configuration Apache, vous pouvez faire passer la vérification du domaine par le répertoire webroot. Indiquez alors exactement le répertoire que le VirtualHost utilise comme DocumentRoot :
certbot --authenticator webroot --installer apache -w /var/www/MonDomaine.fr -d MonDomaine.fr -d www.MonDomaine.fr
Si votre site se trouve dans le répertoire par défaut, la commande est la suivante :
certbot --authenticator webroot --installer apache -w /var/www/html/ -d MonDomaine.fr -d www.MonDomaine.fr
Les questions posées par Certbot
Au premier lancement, Certbot pose quelques questions :
- Adresse e-mail : indiquez une adresse que vous consultez vraiment. C'est par ce biais que Let's Encrypt vous prévient si un renouvellement n'a pas lieu.
- Conditions d'utilisation : avec « A », vous les acceptez.
- Newsletter de l'Electronic Frontier Foundation : « Y » pour oui, « N » pour non. C'est facultatif et sans aucune influence sur le certificat.
- Redirection vers HTTPS : choisissez l'option « Redirect » pour qu'Apache redirige automatiquement tous les appels HTTP vers HTTPS.
Certbot affiche ensuite le chemin du certificat. Les fichiers se trouvent dans /etc/letsencrypt/live/MonDomaine.fr/. Ne modifiez pas ces fichiers à la main, ils sont réécrits à chaque renouvellement.
Vérifier le renouvellement automatique
Un certificat de Let's Encrypt est valable 90 jours. Certbot le renouvelle automatiquement dès qu'il reste moins de 30 jours de validité. Le paquet fournit pour cela un timer systemd. Vérifiez qu'il est bien actif :
systemctl list-timers certbot.timer
Si le timer n'est pas actif, activez-le :
systemctl enable --now certbot.timer
Testez ensuite le déroulement à blanc. Rien n'est émis à cette occasion, Certbot ne fait que simuler le renouvellement :
certbot renew --dry-run
Pour qu'Apache utilise vraiment le nouveau certificat après un renouvellement, enregistrez une fois pour toutes un deploy-hook :
certbot renew --deploy-hook "systemctl reload apache2"
Afficher et supprimer des certificats
Pour obtenir une vue d'ensemble de tous les certificats gérés sur le serveur :
certbot certificates
Voici comment supprimer un certificat dont vous n'avez plus besoin, afin que Certbot n'essaie plus de le renouveler :
certbot delete --cert-name MonDomaine.fr
Erreurs fréquentes
- « Could not bind to port 80 » : un autre service occupe le port 80. Arrêtez-le ou utilisez la méthode webroot, qui s'appuie sur l'Apache déjà en cours d'exécution.
- « Invalid response from http://.../.well-known/acme-challenge/... » : le domaine ne pointe pas vers ce serveur, un pare-feu bloque le port 80, ou le répertoire webroot indiqué ne correspond pas au VirtualHost.
- « The requested apache plugin does not appear to be installed » : le paquet « python3-certbot-apache » est manquant.
- « too many certificates already issued » : vous avez atteint une limite de Let's Encrypt. Testez désormais vos configurations avec
--dry-runavant de demander un vrai certificat. - Le navigateur affiche encore un avertissement : videz le cache du navigateur et vérifiez qu'Apache a bien été rechargé après l'émission.
Rediriger HTTP vers HTTPS de façon permanente
Si vous n'avez pas activé la redirection lors des questions de Certbot, vous pouvez l'ajouter à tout moment. Nous décrivons dans un article dédié comment procéder à l'aide d'un fichier .htaccess, consacré à la redirection de HTTP vers HTTPS.
Questions fréquentes
Combien coûte un certificat SSL de Let's Encrypt ?
Quelle est la durée de validité d'un certificat Let's Encrypt ?
Dois-je renouveler le certificat à la main ?
Let's Encrypt fonctionne-t-il aussi pour les sous-domaines ?
Pourquoi la vérification du domaine échoue-t-elle ?
2023-2026 KernelHost GmbH. Tous droits réservés. Ce guide est protégé par le droit d'auteur. Sa republication sur d'autres sites web, même partielle ou sous une forme modifiée, n'est pas autorisée sans notre accord écrit. Les citations accompagnées de la source et d'un lien sont expressément les bienvenues.

