Certificat SSL gratuit Let’s Encrypt : installation et configuration

Depuis 2016, Let’s Encrypt a rendu le HTTPS accessible à tous les sites web, gratuitement et sans exception. En 2026, l’autorité de certification délivre plus de 350 millions de certificats actifs et protège près de 80 % du trafic web mondial. Pourtant, l’installation reste un point de blocage pour beaucoup de développeurs et d’administrateurs, surtout sur des serveurs dédiés ou VPS sans panneau de contrôle. Après dix ans de déploiements sur des centaines de serveurs, voici le guide que j’aurais aimé avoir à mes débuts : de la théorie à la configuration avancée, en passant par les pièges que personne ne mentionne.

L’essentiel en bref

  • Let’s Encrypt est une autorité de certification gratuite, automatisée et ouverte, soutenue par l’ISRG
  • Les certificats ont une durée de 90 jours et se renouvellent automatiquement via Certbot
  • Certbot est le client officiel : il gère l’émission, l’installation et le renouvellement sur Apache et Nginx
  • Let’s Encrypt utilise le protocole ACME (Automatic Certificate Management Environment)
  • Compatibilité : 99,9 % des navigateurs modernes reconnaissent les certificats Let’s Encrypt
  • Limitations : pas de certificats EV (barre verte), pas de wildcard sans validation DNS
Cadenas HTTPS dans la barre d'adresse d'un navigateur sur un écran d'ordinateur
Un certificat SSL gratuit Let’s Encrypt offre le même niveau de chiffrement TLS 1.3 qu’un certificat payant à 200 €/an.

SSL, TLS et HTTPS : comprendre les bases en 5 minutes

Avant d’installer quoi que ce soit, clarifions la terminologie. SSL (Secure Sockets Layer) est le protocole historique de chiffrement des communications web. Il a été remplacé par TLS (Transport Layer Security), dont la version 1.3 est la norme en 2026. Quand on parle de « certificat SSL », on désigne en réalité un certificat TLS. L’usage du terme SSL persiste par habitude.

HTTPS est la version sécurisée du protocole HTTP : le navigateur et le serveur échangent les données via un tunnel chiffré. Pour activer HTTPS, le serveur doit présenter un certificat numérique qui prouve son identité. Ce certificat est délivré par une autorité de certification (CA) de confiance. Let’s Encrypt est l’une de ces autorités.

Le certificat contient trois informations essentielles : le nom de domaine couvert, la clé publique du serveur et la signature de l’autorité de certification. Le navigateur vérifie cette signature contre sa liste de CA de confiance (intégrée au système d’exploitation). Si la signature est valide, le cadenas s’affiche. Sinon, l’utilisateur voit un avertissement de sécurité. Depuis 2018, Google pénalise les sites sans HTTPS dans ses résultats de recherche.

Comment fonctionne Let’s Encrypt

Let’s Encrypt se distingue des autorités de certification traditionnelles par trois principes : gratuité (pas de frais d’émission ni de renouvellement), automatisation (via le protocole ACME) et ouverture (le code source est public, les certificats sont enregistrés dans des logs de transparence).

Le protocole ACME (Automatic Certificate Management Environment) est le cœur du système. Lorsque vous demandez un certificat, le client ACME (Certbot, par exemple) contacte les serveurs de Let’s Encrypt et prouve que vous contrôlez le domaine. Cette preuve se fait par l’un des deux « challenges » :

HTTP-01 : Let’s Encrypt demande au client de placer un fichier spécifique dans le répertoire .well-known/acme-challenge/ du site web. Si le serveur de Let’s Encrypt peut accéder à ce fichier via HTTP, la propriété du domaine est prouvée. C’est la méthode la plus courante pour les sites web classiques.

DNS-01 : Let’s Encrypt demande au client de créer un enregistrement TXT dans la zone DNS du domaine. Cette méthode est nécessaire pour les certificats wildcard (*.example.com) et pour les serveurs qui ne sont pas accessibles depuis Internet (intranets, serveurs de développement).

Une fois la preuve validée, Let’s Encrypt émet le certificat avec une durée de vie de 90 jours. Cette courte durée, volontaire, force l’automatisation du renouvellement et limite l’exposition en cas de compromission de la clé privée. Le renouvellement automatique via cron est la norme recommandée, comme je l’explique dans la section renouvellement automatique.

Installer Certbot sur votre serveur

Certbot est le client ACME officiel, maintenu par l’Electronic Frontier Foundation (EFF). Il fonctionne sur la plupart des distributions Linux et gère nativement Apache et Nginx. Voici les commandes d’installation selon votre système.

Système Commande d’installation Prérequis
Ubuntu 22.04+ / Debian 12+ sudo apt install certbot python3-certbot-nginx Nginx ou Apache installé
CentOS / Rocky / AlmaLinux 9 sudo dnf install certbot python3-certbot-nginx EPEL repo activé
Snap (universel) sudo snap install --classic certbot Snapd installé
Docker docker run certbot/certbot certonly Docker installé
macOS (dev) brew install certbot Homebrew

La méthode Snap est recommandée par Certbot lui-même car elle garantit la version la plus récente, indépendamment de la version du package dans les dépôts de la distribution. Sur un VPS, la commande snap est la plus fiable.

Une fois Certbot installé, vérifiez la version : certbot --version. En 2026, la version stable est 2.x. Si vous obtenez une version 0.x ou 1.x, mettez à jour : les anciennes versions ont des incompatibilités avec les dernières API ACME.

Obtenir un certificat SSL pour Nginx

La commande la plus simple pour obtenir et installer un certificat sur Nginx :

sudo certbot --nginx -d example.com -d www.example.com

Certbot détecte automatiquement les blocs server dans votre configuration Nginx, installe le certificat et configure la redirection HTTP → HTTPS. Le processus prend moins de 30 secondes si votre DNS pointe déjà vers le serveur.

Ce qui se passe en coulisses : Certbot crée un challenge HTTP-01, lance un serveur temporaire sur le port 80 (ou utilise votre Nginx), attend la validation de Let’s Encrypt, télécharge le certificat et la chaîne de confiance, puis modifie votre configuration Nginx pour inclure les directives ssl_certificate et ssl_certificate_key.

Pour les serveurs qui gèrent plusieurs sites (comme un hébergement multi-sites), ajoutez tous les domaines dans une seule commande : certbot --nginx -d site1.com -d www.site1.com -d site2.com -d www.site2.com. Certbot émettra un certificat SAN (Subject Alternative Name) couvrant tous les domaines.

Terminal Linux affichant l'exécution de Certbot avec succès
La commande certbot –nginx configure automatiquement le HTTPS en moins de 30 secondes, redirection incluse.

Obtenir un certificat SSL pour Apache

La procédure Apache est similaire. Installez d’abord le plugin Apache : sudo apt install python3-certbot-apache (ou python3-certbot-apache selon la distribution). Puis lancez :

sudo certbot --apache -d example.com -d www.example.com

Certbot modifie la configuration du VirtualHost pour activer le module ssl, configure les directives SSLCertificateFile, SSLCertificateKeyFile et SSLCertificateChainFile, et active la redirection. Apache nécessite un redémarrage (que Certbot fait automatiquement via systemctl reload apache2).

Point de vigilance : si vous utilisez .htaccess pour d’autres redirections (www/non-www, trailing slash), vérifiez qu’il n’y a pas de conflit avec la redirection HTTPS ajoutée par Certbot. Les boucles de redirection sont le problème le plus fréquent que je rencontre en support. Consultez notre guide sur la sécurisation WordPress pour les spécificités CMS.

🔒

SSL installé, mais votre site est-il rapide ?

Le HTTPS ajoute un handshake TLS. Un bon hébergeur LiteSpeed compense largement ce surcoût.

Comparer les hébergeurs →

Certificats wildcard : protéger tous les sous-domaines

Un certificat wildcard couvre un domaine et tous ses sous-domaines de premier niveau (*.example.com). Il est indispensable si vous gérez de nombreux sous-domaines (blog.example.com, app.example.com, api.example.com) sans vouloir lister chacun d’eux.

Pour obtenir un wildcard avec Let’s Encrypt, la validation DNS-01 est obligatoire :

sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

Certbot vous demandera de créer un enregistrement TXT _acme-challenge.example.com avec une valeur spécifique. Vous devez le faire manuellement dans l’interface de votre registrar ou via l’API DNS. Une fois l’enregistrement propagé (vérifiable via dig TXT _acme-challenge.example.com), validez et le certificat est émis.

Pour automatiser le renouvellement des wildcards, utilisez un plugin DNS Certbot compatible avec votre fournisseur DNS : certbot-dns-cloudflare, certbot-dns-ovh, certbot-dns-route53, etc. Sans plugin, le renouvellement wildcard nécessite une intervention manuelle tous les 90 jours.

Fournisseur DNS Plugin Certbot Commande d’installation Auto-renouvellement
Cloudflare certbot-dns-cloudflare pip install certbot-dns-cloudflare Oui
OVH certbot-dns-ovh pip install certbot-dns-ovh Oui
AWS Route 53 certbot-dns-route53 pip install certbot-dns-route53 Oui
DigitalOcean certbot-dns-digitalocean pip install certbot-dns-digitalocean Oui
Google Cloud DNS certbot-dns-google pip install certbot-dns-google Oui
Autre / Manuel –manual Intégré à Certbot Non (script custom requis)

Renouvellement automatique : le cron indispensable

Les certificats Let’s Encrypt expirent après 90 jours. Certbot tente le renouvellement automatiquement via un timer systemd ou un cron. Sur la plupart des installations, le timer est configuré lors de l’installation :

sudo systemctl status certbot.timer

Si le timer n’est pas actif, créez un cron manuel : 0 3 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx". Le --deploy-hook recharge le serveur web uniquement si un certificat a été renouvelé. Sans ce hook, Nginx continue de servir l’ancien certificat jusqu’au prochain redémarrage.

Test de renouvellement : avant de compter sur l’automatisation, testez avec sudo certbot renew --dry-run. Cette commande simule le renouvellement sans modifier les certificats. Si le test échoue, le problème vient souvent du port 80 bloqué par un firewall ou d’un serveur web qui ne répond pas au challenge.

Certbot renouvelle les certificats 30 jours avant l’expiration. Avec un cron quotidien, vous avez donc 30 jours de marge avant une expiration réelle. J’ai vu des sites tomber en erreur SSL parce que le cron avait été supprimé lors d’une migration de serveur. Vérifiez systématiquement le cron après chaque migration de site.

Administrateur système vérifiant les certificats SSL sur un serveur
Le renouvellement automatique via certbot.timer élimine le risque d’expiration : Certbot renouvelle 30 jours avant l’échéance.

Configuration sécurité avancée : headers et TLS

Un certificat SSL seul ne suffit pas pour une sécurité optimale. Voici les configurations que j’applique systématiquement sur les serveurs de mes clients.

HSTS (HTTP Strict Transport Security) : force le navigateur à utiliser HTTPS même si l’utilisateur tape http://. En Nginx : add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;. En Apache : Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains".

Protocoles TLS : désactivez TLS 1.0 et 1.1 (vulnérables) et n’autorisez que TLS 1.2 et 1.3. En Nginx : ssl_protocols TLSv1.2 TLSv1.3;. Le générateur de configuration Mozilla SSL (ssl-config.mozilla.org) produit des configurations optimales pour chaque serveur web.

OCSP Stapling : permet au serveur de fournir la preuve de validité du certificat directement au client, sans que celui-ci contacte l’autorité de certification. Réduit le temps de connexion TLS de 100 à 300 ms. En Nginx : ssl_stapling on; ssl_stapling_verify on;.

Pour vérifier votre configuration, utilisez le test SSL Labs de Qualys. Visez un score A+. Les erreurs les plus fréquentes : protocoles obsolètes activés, cipher suites faibles et absence de HSTS. Consultez notre comparatif hébergement WordPress vs classique pour comprendre comment les hébergeurs gèrent ces aspects.

Hébergeurs avec SSL Let’s Encrypt intégré

Si vous utilisez un hébergement mutualisé, la bonne nouvelle est que la plupart des hébergeurs français intègrent désormais Let’s Encrypt nativement. Pas de ligne de commande, pas de cron : tout est automatique depuis le panneau de contrôle.

Hébergeur SSL Let’s Encrypt Installation Renouvellement Wildcard
o2switch Inclus gratuit 1 clic (cPanel) Automatique Oui
Infomaniak Inclus gratuit Automatique à l’activation Automatique Oui
PlanetHoster Inclus gratuit 1 clic (N0C panel) Automatique Oui
Hostinger Inclus gratuit Automatique Automatique Non (payant)
OVH Inclus gratuit 1 clic (cPanel/Plesk) Automatique Non

Sur un hébergement mutualisé, la gestion SSL est transparente. C’est sur les VPS et serveurs dédiés que Certbot prend tout son sens, car vous gérez vous-même la stack serveur.

Les 7 erreurs les plus fréquentes

1. Port 80 fermé dans le firewall. Le challenge HTTP-01 nécessite que Let’s Encrypt accède au port 80 de votre serveur. Si iptables ou ufw bloque le port 80, Certbot échoue systématiquement. Ouvrez le port 80 même si vous redirigez tout vers HTTPS.

2. DNS non propagé. Si vous venez de modifier vos DNS, attendez la propagation complète (jusqu’à 48h, souvent 1-2h en pratique) avant de lancer Certbot. Vérifiez avec dig A example.com.

3. Oublier le www. Si votre site répond sur example.com ET www.example.com, demandez un certificat pour les deux. Sinon, les visiteurs qui tapent www verront une erreur SSL.

4. Rate limiting. Let’s Encrypt limite à 50 certificats par domaine enregistré par semaine. Si vous testez en boucle, vous risquez d’atteindre cette limite. Utilisez l’environnement de staging pour les tests : certbot --staging.

5. Cron de renouvellement supprimé. Après une migration de serveur, le timer certbot n’est pas toujours recréé. Le certificat expire 90 jours plus tard, en pleine nuit ou un week-end.

6. Mixed content. Le certificat est installé mais le site charge des ressources en HTTP (images, scripts, fonts). Le navigateur affiche un cadenas barré. Corrigez toutes les URLs en HTTPS ou utilisez des URLs relatives.

7. Certificat sur le mauvais serveur. Si vous utilisez un CDN (Cloudflare) ou un reverse proxy, le certificat doit être installé sur le point d’entrée (le CDN), pas sur le serveur d’origine. Cloudflare fournit son propre certificat pour le frontend et un « Origin Certificate » pour le backend.

Écran d'erreur de certificat SSL expiré dans un navigateur web
Un certificat expiré bloque l’accès au site : le cron de renouvellement automatique est la première chose à vérifier après toute migration serveur.

Let’s Encrypt vs certificats payants : le vrai comparatif

Critère Let’s Encrypt (DV) Certificat DV payant Certificat OV/EV payant
Prix 0 € 10-80 €/an 100-500 €/an
Niveau de validation Domain Validation Domain Validation Organisation / Extended
Chiffrement TLS 1.2/1.3 (identique) TLS 1.2/1.3 (identique) TLS 1.2/1.3 (identique)
Durée 90 jours 1 an 1-2 ans
Renouvellement Automatique (Certbot) Manuel ou semi-auto Manuel
Wildcard Oui (DNS-01) Oui Oui
Garantie financière Non 10 000-250 000 $ 250 000-1 750 000 $
Barre verte / EV Non Non Oui (OV/EV seulement)
Support technique Communautaire Email/téléphone Dédié
Compatibilité 99,9 % navigateurs 99,9 % 99,9 %

Verdict : pour 95 % des sites web (blogs, sites vitrines, e-commerce standard, applications web), Let’s Encrypt est suffisant. Le chiffrement est strictement identique à un certificat payant DV. Les certificats payants OV/EV ne se justifient que pour les banques, assurances et grandes entreprises qui ont besoin de la validation d’organisation et de la garantie financière. Pour choisir le bon hébergement avec SSL intégré, consultez notre guide du meilleur hébergeur web en France.

🛠️

Besoin d’un hébergeur avec SSL intégré ?

o2switch, Infomaniak et PlanetHoster incluent Let’s Encrypt en 1 clic, sans ligne de commande.

Voir le classement →

Questions fréquentes

Let's Encrypt est-il aussi sécurisé qu'un certificat payant ?
Oui. Le niveau de chiffrement est identique (TLS 1.2/1.3, clés RSA 2048 bits ou ECDSA). La différence entre gratuit et payant ne porte pas sur la sécurité mais sur le niveau de validation (DV vs OV/EV) et la garantie financière. Pour un blog, un site vitrine ou un e-commerce standard, Let's Encrypt offre exactement le même niveau de protection qu'un certificat DV à 80 €/an.
Pourquoi les certificats Let's Encrypt ne durent que 90 jours ?
C'est un choix de design, pas une limitation. La courte durée force l'automatisation (plus fiable que le renouvellement manuel annuel) et réduit la fenêtre d'exposition en cas de compromission de la clé privée. Avec Certbot et un cron, le renouvellement est transparent et vous n'y pensez plus.
Peut-on utiliser Let's Encrypt pour un site e-commerce ?
Oui, sans aucune réserve. Le chiffrement TLS protège les données de paiement en transit de manière identique quel que soit le certificat. Les processeurs de paiement (Stripe, PayPal) acceptent les certificats Let's Encrypt. Seules les très grandes plateformes e-commerce utilisent des certificats EV pour l'image de marque, pas pour la sécurité.
Comment savoir si mon certificat est bien installé ?
Trois vérifications : 1) le cadenas apparaît dans la barre d'adresse, 2) curl -vI https://votre-domaine.fr affiche les détails du certificat, 3) le test SSL Labs (ssllabs.com/ssltest) donne un score A ou A+. Si l'un de ces tests échoue, vérifiez la configuration Nginx/Apache et la chaîne de certificats.
Let's Encrypt fonctionne-t-il avec Cloudflare ?
Oui, mais la configuration dépend du mode SSL de Cloudflare. En mode Full (Strict), installez un certificat Let's Encrypt sur votre serveur d'origine. Cloudflare gère son propre certificat côté visiteur. En mode Flexible (déconseillé), Cloudflare chiffre le trafic visiteur → Cloudflare, mais pas Cloudflare → serveur. Utilisez toujours Full (Strict) pour une sécurité complète.
Que faire si Certbot échoue ?
Les causes les plus fréquentes : port 80 fermé (vérifiez le firewall avec ufw status ou iptables -L), DNS non propagé (vérifiez avec dig A votre-domaine.fr), rate limit atteint (attendez une semaine ou utilisez --staging). Les logs détaillés se trouvent dans /var/log/letsencrypt/letsencrypt.log.
Combien de domaines peut couvrir un seul certificat Let's Encrypt ?
Un certificat SAN (Subject Alternative Name) peut couvrir jusqu'à 100 domaines. Un certificat wildcard couvre un domaine et tous ses sous-domaines de premier niveau. La limite par compte est de 50 certificats par domaine enregistré par semaine et 300 nouvelles commandes par compte par 3 heures.

Thomas Renard

Développeur web full-stack depuis 2014

Spécialisé PHP/Symfony et WordPress, Thomas partage ses retours terrain sur les hébergeurs, frameworks et outils qui font vraiment gagner du temps. 8 ans d’agence, aujourd’hui consultant indépendant.

Retour en haut