Comment installer Let's Encrypt SSL sur un VPS : guide complet 2026

L'installation d'un Let's Encrypt SSL VPS est devenue une étape incontournable pour sécuriser les communications entre vos serveurs et les utilisateurs finaux. Que vous hébergiez un site web, une API ou une application métier, le chiffrement TLS/SSL via Let's Encrypt permet de garantir la confidentialité des données sans coût de licence. Ce guide technique vous accompagne pas à pas dans la mise en œuvre d'un certificat Let's Encrypt sur un VPS Linux ou Windows, avec les outils Certbot, acme.sh et win-acme.
Let's Encrypt est une autorité de certification (CA) gratuite, automatisée et ouverte, délivrée par l'ISRG (Internet Security Research Group). Elle émet des certificats TLS/SSL X.509 d'une durée de validité de 90 jours, renouvelables automatiquement. Cette courte durée renforce la sécurité en limitant la fenêtre d'exposition en cas de compromission de clé privée. Let's Encrypt utilise le protocole ACME (Automatic Certificate Management Environment), standardisé par l'IETF dans la RFC 8555, pour automatiser la délivrance et le renouvellement des certificats.
Lors du déploiement d'un Let's Encrypt SSL VPS, deux mécanismes de validation domaine (DV) sont couramment utilisés : HTTP-01 (validation via fichier déposé sur le serveur web accessible en HTTP) et DNS-01 (validation via enregistrement TXT DNS). Le challenge HTTP-01 est le plus simple pour les configurations classiques avec un serveur web Nginx ou Apache, tandis que DNS-01 est indispensable pour les certificats wildcard ou les serveurs sans IP publique exposée en HTTP.

Prérequis techniques pour installer Let's Encrypt SSL VPS
Avant de démarrer l'installation d'un certificat Let's Encrypt sur votre VPS, assurez-vous de disposer des éléments suivants :
- Un VPS sous Linux ou Windows avec accès root ou administrateur. VPS Linux OmegaCloud propose des instances KVM sous Debian 12, Ubuntu 22.04 LTS, Rocky Linux 9 ou AlmaLinux 9, toutes compatibles Certbot et acme.sh.
- Un nom de domaine pointant vers votre VPS via un enregistrement DNS A (IPv4) ou AAAA (IPv6). La propagation DNS doit être effective avant de lancer la validation ACME.
- Port 80 (HTTP) ou 443 (HTTPS) ouvert dans le firewall du VPS pour le challenge HTTP-01, ou accès à l'API DNS de votre registrar pour DNS-01.
- Serveur web installé : Nginx, Apache, Caddy, ou tout serveur capable de servir un fichier statique via HTTP. Si vous utilisez un reverse proxy (comme Nginx devant une application Node.js), assurez-vous que le chemin
/.well-known/acme-challenge/est correctement acheminé. - Connexion SSH avec clé publique pour Linux (désactiver l'authentification par mot de passe), ou RDP pour Windows Server. L'anti-DDoS volumétrique est géré par OmegaCloud au niveau du datacenter, vous n'avez pas à configurer de scrubbing externe.
Sur un VPS Linux fraîchement provisionné, effectuez une mise à jour des paquets système avant toute installation :
# Debian / Ubuntu
sudo apt update && sudo apt upgrade -y
# Rocky Linux / AlmaLinux
sudo dnf update -y
Vérifiez que votre domaine résout correctement vers l'IP publique de votre VPS :
dig +short exemple.com
nslookup exemple.com
Si la réponse correspond à l'IP de votre VPS, vous êtes prêt à passer à l'installation de Certbot ou d'un autre client ACME.
Installation Let's Encrypt SSL VPS avec Certbot sous Linux
Certbot est le client ACME officiel recommandé par Let's Encrypt pour Linux. Il s'intègre nativement avec Nginx et Apache, automatise le renouvellement via systemd timer ou cron, et gère les redirections HTTP → HTTPS. Voici la procédure d'installation complète pour Debian/Ubuntu et Rocky/Alma.
Installation de Certbot sur Debian 12 / Ubuntu 22.04 LTS
sudo apt install certbot python3-certbot-nginx -y
Si vous utilisez Apache au lieu de Nginx :
sudo apt install certbot python3-certbot-apache -y
Installation de Certbot sur Rocky Linux 9 / AlmaLinux 9
sudo dnf install certbot python3-certbot-nginx -y
Obtenir un certificat Let's Encrypt avec validation HTTP-01
Assurez-vous que Nginx (ou Apache) est démarré et écoute sur le port 80. Voici un exemple de bloc serveur Nginx minimal pour le challenge ACME :
server {
listen 80;
server_name exemple.com www.exemple.com;
location /.well-known/acme-challenge/ {
root /var/www/html;
}
location / {
return 301 https://$host$request_uri;
}
}
Rechargez Nginx :
sudo systemctl reload nginx
Lancez Certbot en mode automatique pour Nginx :
sudo certbot --nginx -d exemple.com -d www.exemple.com
Certbot va :
- Valider la propriété du domaine via le challenge HTTP-01 en déposant un fichier dans
/var/www/html/.well-known/acme-challenge/. - Générer la paire clé privée / certificat (RSA 2048 ou ECDSA P-256 selon configuration).
- Modifier automatiquement la configuration Nginx pour activer HTTPS sur le port 443 avec les directives
ssl_certificateetssl_certificate_key. - Configurer une redirection permanente HTTP → HTTPS.
Les certificats sont stockés dans /etc/letsencrypt/live/exemple.com/ :
fullchain.pem: certificat complet (certificat du domaine + chaîne intermédiaire Let's Encrypt)privkey.pem: clé privée (à protéger, chmod 600)chain.pem: chaîne intermédiaire seulecert.pem: certificat du domaine seul

Renouvellement automatique du certificat
Certbot installe automatiquement un timer systemd (ou tâche cron selon la distribution) qui tente le renouvellement deux fois par jour. Les certificats sont renouvelés lorsque leur date d'expiration est à moins de 30 jours.
Testez le renouvellement en mode dry-run (simulation) :
sudo certbot renew --dry-run
Si le test réussit, le renouvellement automatique est opérationnel. Vérifiez le statut du timer systemd :
sudo systemctl status certbot.timer
Obtenir un certificat wildcard avec validation DNS-01
Pour un certificat couvrant *.exemple.com, utilisez le challenge DNS-01. Certbot ne peut pas automatiser la création d'enregistrements DNS sauf si vous utilisez un plugin pour votre fournisseur DNS (Cloudflare, OVH, etc.). Exemple manuel :
sudo certbot certonly --manual --preferred-challenges dns -d exemple.com -d *.exemple.com
Certbot affichera un enregistrement TXT à créer dans votre zone DNS. Ajoutez l'enregistrement, attendez la propagation (vérifiez avec dig _acme-challenge.exemple.com TXT), puis appuyez sur Entrée pour valider.
Après validation, le certificat wildcard est délivré. Vous devrez configurer manuellement votre serveur web pour l'utiliser, et automatiser le renouvellement via un script qui interagit avec l'API DNS de votre registrar (certbot-dns-cloudflare, certbot-dns-ovh, etc.).
Installation Let's Encrypt SSL VPS sous Windows Server avec win-acme
Pour un VPS Windows OmegaCloud sous Windows Server 2019/2022 avec IIS (Internet Information Services), win-acme (anciennement letsencrypt-win-simple) est le client ACME le plus mature et stable. Il supporte IIS, la validation HTTP-01 et DNS-01, et configure automatiquement les bindings HTTPS dans IIS.
Téléchargement et installation de win-acme
Connectez-vous en RDP à votre VPS Windows, ouvrez PowerShell en tant qu'Administrateur, et téléchargez la dernière version de win-acme depuis GitHub :
Invoke-WebRequest -Uri https://github.com/win-acme/win-acme/releases/latest/download/win-acme.v2.x.x.xxxx.x64.pluggable.zip -OutFile C:\win-acme.zip
Expand-Archive -Path C:\win-acme.zip -DestinationPath C:\win-acme
cd C:\win-acme
Lancez win-acme en mode interactif :
.\wacs.exe
Créer un nouveau certificat pour IIS
Dans le menu interactif :
- Sélectionnez N pour créer un nouveau certificat.
- Choisissez 1 pour lire les bindings depuis IIS (win-acme détecte automatiquement tous les sites configurés dans IIS).
- Sélectionnez le site IIS pour lequel vous souhaitez obtenir un certificat (par exemple, site "exemple.com" sur port 80).
- Validation : choisissez HTTP validation (le challenge ACME sera effectué via IIS qui sert déjà le domaine).
- Store : sélectionnez Certificate Store (win-acme installe le certificat dans le magasin Windows LocalMachine\WebHosting).
- Installation : choisissez IIS pour que win-acme crée automatiquement le binding HTTPS sur le port 443 avec le certificat Let's Encrypt.
win-acme effectue la validation, télécharge le certificat, l'installe dans le magasin Windows, et configure IIS. Vous pouvez immédiatement accéder à votre site en HTTPS.
Renouvellement automatique sous Windows
win-acme crée automatiquement une tâche planifiée Windows qui s'exécute quotidiennement pour renouveler les certificats arrivant à échéance. Vérifiez la tâche dans le Planificateur de tâches (Task Scheduler) sous win-acme renew.
Pour tester manuellement le renouvellement :
.\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/directory"
Configuration avancée : certificats wildcard et validation DNS-01
Si vous avez besoin d'un certificat wildcard sous Windows, win-acme supporte la validation DNS-01 via plugins (Azure DNS, Cloudflare, etc.). Exemple avec un plugin DNS manuel :
.\wacs.exe --target manual --host *.exemple.com,exemple.com --validation dns-01 --validationmode manual
win-acme affichera l'enregistrement TXT à créer dans votre zone DNS. Ajoutez-le, attendez la propagation, puis poursuivez.
Bonnes pratiques de sécurité SSL/TLS sur VPS
L'installation d'un certificat Let's Encrypt SSL VPS n'est que la première étape. Pour garantir un niveau de sécurité optimal, appliquez les recommandations suivantes :
1. Désactiver les protocoles TLS obsolètes
TLS 1.0 et 1.1 sont dépréciés depuis 2020. Forcez TLS 1.2 et TLS 1.3 uniquement. Exemple pour Nginx :
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
Pour IIS sous Windows Server, désactivez TLS 1.0/1.1 via la clé de registre :
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Force
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server' -Name 'Enabled' -Value 0 -PropertyType 'DWord' -Force
2. Activer HSTS (HTTP Strict Transport Security)
HSTS force les navigateurs à toujours utiliser HTTPS pour votre domaine, même si l'utilisateur tape http:// dans la barre d'adresse. Ajoutez l'en-tête dans Nginx :
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
3. Configurer OCSP Stapling
OCSP Stapling améliore les performances et la confidentialité en permettant au serveur de fournir la preuve de validité du certificat directement, sans que le navigateur contacte l'OCSP responder de Let's Encrypt. Configuration Nginx :
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/exemple.com/chain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
4. Protéger la clé privée
La clé privée (privkey.pem) doit être lisible uniquement par root ou l'utilisateur du serveur web. Vérifiez les permissions :
sudo chmod 600 /etc/letsencrypt/live/exemple.com/privkey.pem
sudo chown root:root /etc/letsencrypt/live/exemple.com/privkey.pem
5. Mettre en place un WAF applicatif (optionnel)
L'anti-DDoS volumétrique est intégré par défaut sur tous les services OmegaCloud au niveau du datacenter (mitigation kernel-level, transparent). Pour une protection applicative de couche 7 (filtrage SQL injection, XSS, etc.), installez un WAF côté serveur comme ModSecurity avec Nginx ou Caddy. Exemple d'installation ModSecurity pour Nginx sur Debian :
sudo apt install libnginx-mod-security2 -y
sudo nano /etc/nginx/modsec/modsecurity.conf
# Activez SecRuleEngine On
sudo systemctl reload nginx
6. Surveillance et alertes de renouvellement
Bien que le renouvellement soit automatisé, surveillez les logs Certbot ou win-acme pour détecter tout échec. Sur Linux, consultez les journaux systemd :
sudo journalctl -u certbot.timer
Configurez une alerte email en cas d'échec de renouvellement. Le panel OmegaCloud permet de configurer des webhooks pour intégrer des notifications dans votre chaîne CI/CD ou système de monitoring.

Conclusion
L'installation d'un Let's Encrypt SSL VPS via Certbot sous Linux ou win-acme sous Windows Server est une opération rapide, gratuite et entièrement automatisable. En suivant les bonnes pratiques de sécurité TLS (TLS 1.3, HSTS, OCSP Stapling, protection de clé privée), vous garantissez la confidentialité et l'intégrité des communications de vos services hébergés. Le renouvellement automatique tous les 90 jours réduit considérablement la charge opérationnelle tout en maintenant un haut niveau de sécurité. Couplé à l'anti-DDoS volumétrique intégré et à l'infrastructure SSD SAS haute performance d'OmegaCloud, votre VPS bénéficie d'une stack de sécurité complète et professionnelle.
FAQ
Quelle est la différence entre le challenge HTTP-01 et DNS-01 pour Let's Encrypt ?
Le challenge HTTP-01 valide le domaine en déposant un fichier sur le serveur web accessible via HTTP sur le port 80. Il est simple à mettre en œuvre mais nécessite que le serveur soit accessible publiquement sur ce port. Le challenge DNS-01 valide via un enregistrement TXT dans la zone DNS du domaine. Il permet d'obtenir des certificats wildcard (*.exemple.com) et fonctionne pour les serveurs sans IP publique HTTP, mais requiert un accès API au DNS ou une manipulation manuelle de la zone à chaque renouvellement.
Pourquoi les certificats Let's Encrypt expirent-ils tous les 90 jours ?
La durée de validité de 90 jours est une décision de sécurité délibérée de Let's Encrypt. Elle réduit la fenêtre d'exposition en cas de compromission de clé privée, encourage l'automatisation du renouvellement (réduisant ainsi les erreurs humaines), et limite l'impact des certificats mal révoqués. Les clients ACME comme Certbot et win-acme renouvellent automatiquement les certificats à 30 jours de l'expiration, rendant ce cycle transparent pour l'administrateur.
Peut-on utiliser Let's Encrypt pour des services non-web (SMTP, IMAP, serveurs de jeux) ?
Oui, les certificats Let's Encrypt sont des certificats X.509 standard utilisables pour tout protocole supportant TLS/SSL (HTTPS, SMTP/STARTTLS, IMAP/TLS, XMPP, serveurs de jeux, etc.). Pour ces usages, privilégiez le challenge DNS-01 si le service n'expose pas de serveur HTTP sur le port 80. Pointez ensuite la configuration du service (Postfix, Dovecot, etc.) vers les chemins fullchain.pem et privkey.pem du certificat Let's Encrypt, et configurez un hook de renouvellement pour recharger le service après chaque renouvellement automatique.
Prêt à mettre en pratique ce que vous venez de lire ?
Découvrir nos offres

