Comment générer son certificat SSL avec Let's Encrypt

Cet article a été écrit il y a plus de quatre ans, puis mis à jour le 28/07/2026.

Let's Encrypt (letsencrypt.org) est une autorité de certification gratuite qui délivre des certificats SSL/TLS — de quoi passer n'importe quel site en HTTPS sans rien payer.

Billet publié fin 2015, quand le service était en bêta sur invitation, et sérieusement dépoussiéré en 2026 : l'utilitaire letsencrypt-auto qu'on clonait par git a disparu depuis longtemps, l'API historique a été éteinte en 2021, et surtout — plus besoin de couper Apache ni de bricoler un script de renouvellement : tout est automatique. Voici la méthode actuelle, avec certbot.

Installer certbot

La méthode recommandée officiellement passe par snap, pour avoir la dernière version :

# supprimer une éventuelle vieille installation par paquet
sudo apt remove certbot

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

Les paquets des distributions font aussi l'affaire si vous préférez éviter snap (versions un peu moins fraîches, mais très bien pour un serveur classique) :

# Debian / Ubuntu, avec le plugin Apache
sudo apt install certbot python3-certbot-apache

Générer (et installer) le certificat

Contrairement à 2015, pas besoin de couper quoi que ce soit : le challenge de validation passe par le serveur web qui tourne. Une seule commande obtient le certificat et modifie la configuration Apache, redirection HTTP → HTTPS proposée dans la foulée :

sudo certbot --apache -d mondomaine.fr -d www.mondomaine.fr

(Avec nginx : certbot --nginx.) Si comme moi vous préférez garder la main sur vos virtual hosts, certonly se contente de générer le certificat sans toucher à la config :

sudo certbot certonly --apache -d mondomaine.fr

Les fichiers atterrissent toujours au même endroit qu'à l'époque — ça au moins, ça n'a pas bougé — dans /etc/letsencrypt/live/mondomaine.fr/, avec le système de liens symboliques qui évite de retoucher sa config à chaque renouvellement.

Côté Apache

Deux directives suffisent désormais — SSLCertificateChainFile, que je donnais en 2015, est déprécié depuis Apache 2.4.8 : la chaîne est embarquée dans fullchain.pem :

SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/mondomaine.fr/fullchain.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/mondomaine.fr/privkey.pem"

Et la redirection permanente vers le HTTPS, toujours d'actualité (certbot propose de l'ajouter lui-même en mode --apache) :

<VirtualHost *:80>
    ServerName mondomaine.fr
    RedirectMatch permanent ^(.*)$ https://mondomaine.fr$1
</VirtualHost>

Le renouvellement : plus rien à faire

Les certificats sont toujours valables 90 jours, mais la partie « script maison qui coupe Apache + crontab du dimanche soir » de la version 2015 de ce billet est à oublier : les paquets certbot installent un timer systemd (ou une entrée cron) qui renouvelle tout seul ce qui approche de l'expiration, et recharge le serveur web au passage.

# vérifier que le timer est bien en place
systemctl list-timers | grep certbot

# répétition générale, sans rien renouveler réellement
sudo certbot renew --dry-run

Si le dry-run passe, vous pouvez oublier le sujet — c'est bien toute la promesse de Let's Encrypt.

Bonus : certificat wildcard

Pour couvrir *.mondomaine.fr d'un coup, il faut passer par le challenge DNS (la preuve se fait par un enregistrement TXT et non par HTTP), idéalement avec le plugin DNS de votre hébergeur de zone pour que le renouvellement reste automatique :

sudo snap install certbot-dns-ovh   # ou -cloudflare, -gandi…
sudo certbot certonly --dns-ovh -d "mondomaine.fr" -d "*.mondomaine.fr"

Écrit par Kevin Gautreau — développeur & formateur PHP/Drupal freelance en Auvergne. me contacter

Commentaires (6)

Comments

Artemus24 (non vérifié)

Bonjour M. Kevin Gautreau.
Je suis sous Windows 10 Pro et j'aimerai savoir s'il existe une version windows pour créer un certificat Let's Encrypt ?
@+

sw (non vérifié)

Bonjour,

Je cherche à générer un certificat valide utilisable sur un serveur de dev distant mais installé en local (pas en localhost). Le https en local s'obtient facilement, mais un certificat valide est requis quand on veut utiliser des Services Worker sous Chrome (Firefox n'a pas les mêmes impératifs de sécurité - et une console de dev pourrie)

Savez-vous s'il est possible de générer un certificat valide pour un serveur on-line et s'en servir pour un serveur local (en modifiant le host par exemple)

kgaut

Je viens de tester, pas de soucis chez moi :

2018-03-05-12-21-49-Screenshot-01.jpg

Jean Luc (non vérifié)

Bonjour,
Je viens de connaitre votre blog et j'ai fais un essai. Je suis sous windows, Git installer et j'ai une erreur à la commande suivante :
./letsencrypt-auto --server https://acme-v01.api.letsencrypt.org/directory certonly

Voici l'erreur:
"sudo" is not available, will use "su" for installation steps...
Requesting to rerun ./letsencrypt-auto with root privileges...
./letsencrypt-auto: line 161: su: command not found

Auriez-vous une petite idée ?
Merci d'avance