[{"data":1,"prerenderedAt":183},["ShallowReactive",2],{"seo-verification":3,"blog-certificats-ssl-lets-encrypt-vps-ma-fr":6,"promo-bar-likely":182},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-certificats-ssl-lets-encrypt-vps-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":122,"ctaBody":123,"ctaButton":124,"ctaUrl":125,"relatedPosts":126},116,"certificats-ssl-lets-encrypt-vps",{"fr":10,"en":12,"ar":13,"es":14},"free-ssl-certificates-with-lets-encrypt-on-a-vps","شهادات-ssl-مجانية-باستخدام-lets-encrypt-على-خادم-vps","certificados-ssl-gratis-con-lets-encrypt-en-un-vps","Certificats SSL gratuits avec Let's Encrypt sur VPS","Guide complet Let's Encrypt sur VPS : certbot nginx, wildcard DNS-01, renouvellement systemd, hardening TLS, dépannage rate-limits et comparatif certbot\u002Facme.sh\u002FCaddy.",8,0,false,"2026-02-24T00:00:00+00:00","2026-09-30T11:20:34+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fcertificats-ssl-lets-encrypt-vps-poster.svg","Le HTTPS n'est plus une option : navigateurs, SEO et clients l'exigent. Sur un VPS que vous maîtrisez de bout en bout, Let's Encrypt délivre des certificats reconnus, gratuits et renouvelés tout seuls. Ce guide couvre l'installation pas-à-pas de certbot avec Nginx, les certificats wildcard via DNS challenge Cloudflare, la vérification du renouvellement automatique avec le timer systemd, la surveillance de l'expiration et les erreurs les plus fréquentes — rate-limits ACME, port 80 bloqué, propagation DNS.",[34,38,48,51,67,70,73,76,79,118],{"type":35,"title":36,"body":37},"h2","Pourquoi gérer Let's Encrypt soi-même sur un VPS","Let's Encrypt est une autorité de certification gratuite qui émet des certificats TLS validés par challenge automatisé (HTTP-01 ou DNS-01). Sur un hébergement mutualisé, vous subissez la config TLS du fournisseur : versions de protocole imposées, pas d'OCSP stapling, renouvellement opaque. Sur un VPS, vous tenez le `certbot` (ou `acme.sh`), le reverse proxy et la terminaison TLS. Vous décidez des protocoles (TLS 1.2\u002F1.3 uniquement), des suites de chiffrement, du HSTS et de l'agrafage OCSP. Vous pouvez aussi émettre un certificat **wildcard** (`*.votre-domaine.com`) via le challenge DNS-01, couvrir plusieurs domaines dans un seul certificat (SAN), et brancher le renouvellement sur vos propres alertes. Bref : un contrôle total sur la sécurité de transport, condition d'un score A+ sur SSL Labs et d'une note de confiance maximale côté navigateur.",{"type":39,"title":40,"items":41},"ul","Ce que vous gagnez en self-hébergeant la chaîne TLS",[42,43,44,45,46,47],"Certificats 100% gratuits, valables 90 jours et renouvelés automatiquement sans intervention.","Wildcard `*.votre-domaine.com` possible via le challenge DNS-01 : un seul certificat pour tous vos sous-domaines.","Maîtrise complète de la config : TLS 1.3, suites de chiffrement modernes, HSTS et OCSP stapling.","Certificats SAN multi-domaines (`votre-domaine.com`, `www.votre-domaine.com`, `api.votre-domaine.com`) sur une même IP.","Renouvellement scriptable et observable : hooks de reload, alertes Slack\u002Fe-mail avant expiration.","Aucune dépendance à un panneau tiers : la même recette fonctionne sur tous vos VPS et environnements.",{"type":35,"title":49,"body":50},"Prérequis avant de commencer","La terminaison TLS consomme très peu de ressources : un VPS **1 vCPU \u002F 512 Mo à 1 Go de RAM** suffit largement pour servir le HTTPS d'un ou plusieurs sites.\n\nCôté réseau : votre **nom de domaine doit pointer vers l'IP publique du VPS** (enregistrement A\u002FAAAA propagé). Vérifiez la propagation avant de lancer certbot : `dig +short votre-domaine.com` doit renvoyer l'IP de votre VPS. Un challenge qui échoue pour propagation DNS non terminée compte comme tentative et vous rapproche des rate-limits ACME.\n\n**Ports 80 et 443 ouverts** dans le pare-feu — le port 80 est indispensable pour le challenge HTTP-01 (certbot y dépose un fichier de défi temporaire) :\n```bash\nufw allow 80\u002Ftcp\nufw allow 443\u002Ftcp\nufw reload\n```\n\nPour un certificat **wildcard** (`*.votre-domaine.com`), le challenge HTTP-01 ne suffit pas : prévoyez un token API auprès de votre fournisseur DNS (Cloudflare, OVH…) afin d'automatiser le challenge DNS-01.",{"type":52,"title":53,"steps":54},"steps","Installer certbot et obtenir un certificat Nginx",[55,58,61,64],{"title":56,"body":57},"Installer certbot et le plugin Nginx","Sur Debian\u002FUbuntu :\n```bash\napt update\napt install -y certbot python3-certbot-nginx\n```\nLe plugin `python3-certbot-nginx` lit votre config Nginx, y injecte la configuration TLS et remplace la directive `listen 80` par un bloc `443 ssl`. Si vous préférez garder la main sur Nginx, utilisez `--nginx` (automatique) ou `--standalone` \u002F `--webroot` (manuel).",{"title":59,"body":60},"Pointer le domaine et ouvrir les ports","Créez un enregistrement A `votre-domaine.com` (et AAAA si IPv6) vers l'IP du VPS, puis autorisez le trafic web :\n```bash\nufw allow 80,443\u002Ftcp\n```\nConfirmez la résolution avec `dig +short votre-domaine.com` avant d'aller plus loin — un challenge échoue toujours si le DNS ne pointe pas encore.",{"title":62,"body":63},"Émettre le certificat avec le plugin Nginx","La méthode la plus directe — certbot modifie votre vhost Nginx et gère le renouvellement :\n```bash\ncertbot --nginx -d votre-domaine.com -d www.votre-domaine.com\n```\nCertbot vous demande un e-mail (alertes d'expiration) et vous invite à accepter les CGU. Il émet le certificat, modifie `\u002Fetc\u002Fnginx\u002Fsites-available\u002F\u003Cvhost>`, ajoute un redirect HTTP→HTTPS et recharge Nginx sans coupure.\n\nLes fichiers sont déposés dans `\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvotre-domaine.com\u002F` : `fullchain.pem` (certificat + chaîne) et `privkey.pem` (clé privée).",{"title":65,"body":66},"Vérifier le renouvellement automatique","Certbot installe un **timer systemd** qui tente le renouvellement deux fois par jour :\n```bash\nsystemctl status certbot.timer\n```\nPour simuler un renouvellement sans émettre de nouveau certificat :\n```bash\ncertbot renew --dry-run\n```\nSi la simulation réussit, votre chaîne de renouvellement est opérationnelle. Assurez-vous que Nginx se recharge après un renouvellement effectif — certbot ajoute automatiquement un hook `--deploy-hook \"systemctl reload nginx\"` dans `\u002Fetc\u002Fletsencrypt\u002Frenewal\u002F\u003Cdomaine>.conf` avec le plugin Nginx.",{"type":35,"title":68,"body":69},"Certificat wildcard avec DNS challenge Cloudflare","Un certificat `*.votre-domaine.com` couvre tous vos sous-domaines avec un seul fichier. Il est obligatoire si vous créez des sous-domaines dynamiquement ou si vous ne voulez pas émettre un certificat par sous-domaine.\n\nLe challenge HTTP-01 ne peut pas valider un wildcard — il faut le **challenge DNS-01**, qui demande à certbot de créer temporairement un enregistrement TXT `_acme-challenge.votre-domaine.com`.\n\n**Avec Cloudflare (API token) :**\n```bash\napt install -y python3-certbot-dns-cloudflare\n```\nCréez un fichier de credentials Cloudflare (permissions : `600`) :\n```bash\nmkdir -p \u002Fetc\u002Fletsencrypt\u002Fcloudflare\nchmod 700 \u002Fetc\u002Fletsencrypt\u002Fcloudflare\ncat > \u002Fetc\u002Fletsencrypt\u002Fcloudflare\u002Fcredentials.ini \u003C\u003C 'EOF'\ndns_cloudflare_api_token = VOTRE_TOKEN_API_CLOUDFLARE\nEOF\nchmod 600 \u002Fetc\u002Fletsencrypt\u002Fcloudflare\u002Fcredentials.ini\n```\nÉmettez le certificat wildcard :\n```bash\ncertbot certonly \\\n  --dns-cloudflare \\\n  --dns-cloudflare-credentials \u002Fetc\u002Fletsencrypt\u002Fcloudflare\u002Fcredentials.ini \\\n  -d votre-domaine.com \\\n  -d '*.votre-domaine.com'\n```\nCertbot crée l'enregistrement TXT, attend la propagation (par défaut 10 secondes — augmentable avec `--dns-cloudflare-propagation-seconds 30`), obtient le certificat, puis supprime l'enregistrement TXT.\n\n**Alternative avec acme.sh :**\n```bash\nacme.sh --issue --dns dns_cf -d votre-domaine.com -d '*.votre-domaine.com'\n```\n`acme.sh` utilise la variable d'environnement `CF_Token` ou `CF_Key` + `CF_Email` selon votre mode d'authentification Cloudflare.",{"type":35,"title":71,"body":72},"Hardening TLS Nginx : TLS 1.2\u002F1.3, HSTS et cipher suites","Le plugin certbot configure un HTTPS fonctionnel, mais la configuration par défaut n'est pas optimale pour un score A+ SSL Labs. Voici les directives à ajouter dans votre bloc `server` (ou dans un fichier inclus comme `\u002Fetc\u002Fnginx\u002Fsnippets\u002Fssl-params.conf`) :\n```bash\n# Protocoles : TLS 1.2 minimum, TLS 1.3 recommandé\nssl_protocols TLSv1.2 TLSv1.3;\n\n# Suites de chiffrement modernes (Mozilla Intermediate)\nssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;\nssl_prefer_server_ciphers off;\n\n# Session TLS\nssl_session_timeout 1d;\nssl_session_cache shared:SSL:10m;\nssl_session_tickets off;\n\n# OCSP Stapling\nssl_stapling on;\nssl_stapling_verify on;\nresolver 1.1.1.1 8.8.8.8 valid=300s;\nresolver_timeout 5s;\n\n# HSTS (6 mois, sous-domaines inclus, preload)\nadd_header Strict-Transport-Security \"max-age=15768000; includeSubDomains; preload\" always;\n\n# En-têtes de sécurité complémentaires\nadd_header X-Frame-Options DENY;\nadd_header X-Content-Type-Options nosniff;\n```\nRedirigez tout le port 80 vers 443 dans un bloc `server` séparé :\n```bash\nserver {\n    listen 80;\n    server_name votre-domaine.com www.votre-domaine.com;\n    return 301 https:\u002F\u002F$host$request_uri;\n}\n```\nRechargez sans coupure : `nginx -s reload`. Testez ensuite sur \u003Ca href=\"https:\u002F\u002Fwww.ssllabs.com\u002Fssltest\u002F\">SSL Labs\u003C\u002Fa> — vous devriez obtenir A+.",{"type":35,"title":74,"body":75},"Surveiller l'expiration des certificats","Le renouvellement automatique peut échouer silencieusement : timer systemd désactivé, port 80 bloqué après une modification du pare-feu, token API Cloudflare révoqué… Un certificat expiré en production interrompt le service pour tous vos visiteurs.\n\n**Vérification manuelle :**\n```bash\necho | openssl s_client -connect votre-domaine.com:443 -servername votre-domaine.com 2>\u002Fdev\u002Fnull \\\n  | openssl x509 -noout -dates\n```\n\n**Script d'alerte par e-mail (à placer dans cron ou systemd) :**\n```bash\n#!\u002Fbin\u002Fbash\n# Alerte si le certificat expire dans moins de 14 jours\ncert_file=\"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvotre-domaine.com\u002Ffullchain.pem\"\nif ! openssl x509 -checkend 1209600 -noout -in \"$cert_file\" 2>\u002Fdev\u002Fnull; then\n  echo \"ALERTE : certificat votre-domaine.com expire dans moins de 14 jours\" \\\n    | mail -s \"[SSL] Expiration imminente\" admin@votre-domaine.com\nfi\n```\n`-checkend 1209600` correspond à 14 jours en secondes (14 × 86 400).\n\n**Avec Uptime Kuma :** ajoutez un moniteur de type « Certificate Expiry » qui alerte à J-14 — sans script à maintenir.",{"type":35,"title":77,"body":78},"Dépannage : rate-limits, port 80 bloqué, propagation DNS","**Rate-limits ACME « too many certificates already issued »**\nLet's Encrypt limite à 5 certificats par domaine registrable et par semaine (enregistrement de type `.com`). Si vous atteignez cette limite en testant, basculez sur l'environnement de **staging** :\n```bash\ncertbot --nginx --staging -d votre-domaine.com\n```\nLe staging délivre des certificats non reconnus par les navigateurs, mais sans limite de taux. Une fois votre configuration validée, supprimez le certificat de staging et rééemettez en production.\n\n**Port 80 bloqué**\nLe challenge HTTP-01 exige que Let's Encrypt atteigne `http:\u002F\u002Fvotre-domaine.com\u002F.well-known\u002Facme-challenge\u002F`. Vérifiez :\n```bash\ncurl -I http:\u002F\u002Fvotre-domaine.com\u002F.well-known\u002Facme-challenge\u002Ftest\n# attendu : 404 (la route existe, le fichier n'existe pas encore)\nufw status | grep 80\n```\nSi le port 80 est bloqué par un pare-feu amont (fournisseur cloud, Cloudflare en mode proxy), temporairement ouvrez-le ou basculez en challenge DNS-01.\n\n**Cloudflare proxy actif**\nSi votre domaine est derrière Cloudflare (icône orange), assurez-vous que le mode SSL de Cloudflare est **Full (Strict)** — en mode Flexible, Cloudflare communique avec votre serveur en HTTP et nginx qui redirige HTTP→HTTPS produit une boucle infinie (HTTP 525\u002F526).\n\n**Propagation DNS insuffisante**\nPour le challenge DNS-01, attendez au moins 60 secondes après la création du TXT avant de relancer certbot. Vérifiez :\n```bash\ndig TXT _acme-challenge.votre-domaine.com +short\n```\nSi la valeur n'apparaît pas encore, patientez avant de retenter.",{"type":80,"title":81,"headers":82,"rows":87},"comparison","Comparatif : certbot vs acme.sh vs Caddy HTTPS automatique",[83,84,85,86],"Critère","certbot","acme.sh","Caddy (HTTPS auto)",[88,93,98,103,108,113],[89,90,91,92],"Installation","`apt install certbot`","Script bash, aucune dépendance système","Binaire unique, inclus",[94,95,96,97],"Intégration Nginx\u002FApache","Plugin natif (`--nginx`, `--apache`)","Hooks `--install-cert` manuels","Gère son propre reverse proxy",[99,100,101,102],"Wildcard DNS-01","Via plugin DNS (`python3-certbot-dns-*`)","Natif, nombreux providers DNS intégrés","Via module `tls.dns.*` (Caddy v2)",[104,105,106,107],"Renouvellement","Timer systemd (automatique)","Cronjob généré à l'installation","Natif, sans configuration",[109,110,111,112],"Courbe d'apprentissage","Faible — commandes intuitives","Moyenne — nombreuses options","Très faible — `Caddyfile` minimaliste",[114,115,116,117],"Cas d'usage idéal","Serveur dédié Nginx\u002FApache existant","Environnements complexes, multi-providers DNS","Nouveaux projets, reverse proxy intégré",{"type":119,"title":120,"body":121},"tip","Tester avant la production","Avant de mettre en production, testez contre l'environnement de **staging** de Let's Encrypt (`--staging` chez Certbot, `--server letsencrypt_test` chez acme.sh) : la limite de production est de 5 émissions par domaine et par semaine, et un script mal réglé peut vite vous y faire buter.\n\nAjoutez aussi un certificat de **monitoring d'expiration** : une sonde qui exécute `openssl x509 -checkend 604800` (7 jours) et déclenche une alerte si le renouvellement automatique a silencieusement échoué — un cron cassé est la cause numéro un d'un HTTPS expiré en pleine nuit.\n\nConsultez la \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcertbot\u002Fcertbot\">page de releases certbot sur GitHub\u003C\u002Fa> pour vérifier la version disponible avant d'écrire un tutoriel ou un script d'installation.","Déployez votre VPS Cloud avec HTTPS prêt à l'emploi","Le template VPS Cloud ServOrbit arrive avec Docker, un reverse proxy et la chaîne Let's Encrypt préconfigurée : certificats émis et renouvelés automatiquement, score SSL Labs A+ dès le premier déploiement. Concentrez-vous sur votre application, pas sur la plomberie TLS.","Déployer mon VPS Cloud","\u002Fvps-cloud",[127,145,164],{"id":128,"slug":129,"slugs":130,"title":134,"excerpt":135,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":136,"updatedAt":137,"category":138,"categories":139,"featuredImage":29,"bgImage":30,"posterImage":141,"relatedSolution":142},105,"superviser-vps-uptime-kuma",{"fr":129,"en":131,"ar":132,"es":133},"monitoring-your-vps-with-uptime-kuma","مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma","supervisar-vps-con-uptime-kuma","Superviser votre VPS avec Uptime Kuma","Déployez Uptime Kuma sur votre VPS pour surveiller vos sites et services en self-hosted, avec alertes et page de statut publique.","2026-03-07T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[140],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":143,"appSlug":144},"monitoring","uptime-kuma",{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":154,"views":155,"isPinned":19,"noindex":19,"publishedAt":156,"updatedAt":157,"category":158,"categories":159,"featuredImage":29,"bgImage":30,"posterImage":161,"relatedSolution":162},106,"monitoring-vps-grafana-prometheus",{"fr":147,"en":149,"ar":150,"es":151},"vps-monitoring-with-grafana-and-prometheus","مراقبة-الخادم-الافتراضي-vps-باستخدام-grafana-و-prometheus","monitorizacion-vps-grafana-prometheus","Monitoring VPS avec Grafana et Prometheus","Déployez Prometheus 3.x, Grafana 13.x, Node Exporter et Alertmanager sur votre VPS avec Docker Compose. Dashboards, alertes et durcissement.",11,1,"2026-03-06T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[160],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fmonitoring-vps-grafana-prometheus-poster.svg",{"categorySlug":143,"appSlug":163},"grafana",{"id":165,"slug":166,"slugs":167,"title":171,"excerpt":172,"readTime":173,"views":155,"isPinned":19,"noindex":19,"publishedAt":174,"updatedAt":175,"category":176,"categories":177,"featuredImage":29,"bgImage":30,"posterImage":179,"relatedSolution":180},107,"monitorer-vps-netdata",{"fr":166,"en":168,"ar":169,"es":170},"monitor-your-vps-in-real-time-with-netdata","راقب-خادمك-الافتراضي-vps-في-الوقت-الفعلي-باستخدام-netdata","monitorizar-vps-en-tiempo-real-con-netdata","Monitorer votre VPS en temps réel avec Netdata","Installez Netdata sur votre VPS pour un monitoring temps réel par seconde : milliers de métriques, zéro configuration, alertes incluses.",3,"2026-03-05T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},[178],{"id":17,"name":23,"slug":24,"color":25,"icon":26},"\u002Fblog\u002Fcovers\u002Fmonitorer-vps-netdata-poster.svg",{"categorySlug":143,"appSlug":181},"netdata",true,1794270675548]