Let's Encrypt vient d'annoncer le raccourcissement progressif de ses certificats SSL. Ce changement — de 90 jours aujourd'hui vers 45 jours en 2028 — semble lointain et purement technique. Pourtant, si votre Home Assistant est accessible depuis l'extérieur via HTTPS, la vraie deadline est le 10 février 2027, pas 2028. Ce jour-là, la durée par défaut passe à 64 jours et tout client ACME configuré pour renouveler à intervalle fixe supérieur à 34 jours risque d'échouer silencieusement.

Ce guide identifie votre configuration et vous donne les commandes exactes selon votre setup : HAOS avec l'add-on officiel, HAOS sur Proxmox, HA Docker avec Nginx Proxy Manager, ou certbot autonome. Un blueprint d'alerte HA est fourni en fin d'article — il fonctionne pour tous les setups comme filet de sécurité.

Ce qui change et pourquoi : le calendrier exact

Let's Encrypt est l'autorité de certification qui émet gratuitement les certificats TLS utilisés par des centaines de millions de sites, dont la majorité des instances Home Assistant accessibles en HTTPS. En décembre 2025, l'organisation a publié son plan de réduction progressive de la durée de vie des certificats :

Date Changement Impact
13 mai 2026 Profil tlsserver 45 jours disponible en opt-in Early adopters uniquement — aucune action requise
10 février 2027 Profil classic par défaut → 64 jours Action requise si renouvellement à intervalle fixe > 34 jours
16 février 2028 Profil classic → 45 jours Action requise si renouvellement non basé sur ARI

La motivation est sécuritaire : un certificat valide plus longtemps représente une fenêtre d'exposition plus large si la clé privée est compromise. En raccourcissant la durée, Let's Encrypt force également l'adoption d'ACME Renewal Information (ARI) — un protocole qui permet à Let's Encrypt de signaler dynamiquement quand renouveler, plutôt que de laisser le client agir à intervalle fixe.

Concrètement : si votre client ACME est configuré pour tenter un renouvellement tous les 60 jours et que le nouveau certificat n'est valide que 64 jours, la fenêtre disponible avant expiration ne sera plus que de 4 jours. Insuffisant si votre connexion DuckDNS est momentanément indisponible ou si le challenge HTTP-01 échoue une première fois.

Suis-je impacté ? Identifier votre configuration en 2 minutes

La réponse dépend entièrement de la façon dont votre certificat est émis et renouvelé. Quatre situations couvrent la quasi-totalité des installations Home Assistant :

Situation 1 — HAOS avec l'add-on Let's Encrypt officiel

Vous utilisez Home Assistant OS et avez installé l'add-on "Let's Encrypt" depuis le store. Votre configuration.yaml contient ssl_certificate: /ssl/fullchain.pem. Vous êtes impacté : l'add-on ne s'exécute pas seul et ne renouvelle pas automatiquement. Consultez la section suivante.

Situation 2 — HAOS sur Proxmox ou VM dédiée, certbot externe

Vous avez installé certbot directement sur l'hôte Proxmox (Debian/Ubuntu) ou sur une VM dédiée, et certbot dépose le certificat dans un répertoire accessible depuis HAOS. Vous êtes probablement OK selon la fréquence de votre cron. Consultez la section certbot ci-dessous.

Situation 3 — Home Assistant Docker + Nginx Proxy Manager

HA tourne dans Docker, Nginx Proxy Manager gère le reverse proxy et obtient les certificats Let's Encrypt directement. Vous êtes probablement OK : NPM renouvelle quand il reste moins de 30 jours. Consultez la section NPM pour vérifier.

Situation 4 — Nabu Casa, add-on DuckDNS, ou Cloudflare Tunnel

Vous utilisez HA Cloud (Nabu Casa), l'add-on DuckDNS intégré à HAOS, ou Cloudflare Tunnel pour l'accès externe. Vous n'êtes pas impacté : le certificat est géré par le service tiers, indépendamment de Let's Encrypt côté utilisateur. Consultez la section dédiée plus bas.

HAOS avec l'add-on Let's Encrypt officiel

C'est le cas le plus répandu — et le plus risqué face à ce changement. L'add-on Let's Encrypt dans HAOS lance certbot et dépose les fichiers fullchain.pem et privkey.pem dans /ssl/. Mais contrairement à une idée reçue, l'add-on ne s'exécute pas en arrière-plan : il doit être démarré manuellement ou via une automatisation HA. Un rapport de bug documenté (GitHub issue home-assistant/addons #4338) confirme que les certificats peuvent expirer silencieusement si aucune automatisation n'est en place.

Étape 1 — Vérifier l'état actuel du certificat

Dans Home Assistant, allez dans Paramètres > Appareils et services > Ajouter une intégration, recherchez "Certificate Expiry" et ajoutez votre domaine (ex. monha.duckdns.org) sur le port 443. Cela crée un capteur sensor.certificate_expiry_monha_duckdns_org indiquant le nombre de jours restants.

Si la valeur est inférieure à 30, renouvelez immédiatement en allant dans Paramètres > Modules complémentaires > Let's Encrypt > Démarrer. Surveillez les logs de l'add-on pour confirmer que certbot a réussi le challenge.

Étape 2 — Automatiser le renouvellement

L'automatisation ci-dessous démarre l'add-on Let's Encrypt chaque matin à 3h si le certificat expire dans moins de 21 jours, puis redémarre Home Assistant pour charger le nouveau certificat :

alias: "Let's Encrypt — Renouvellement automatique"
description: "Renouvelle le certificat SSL quand il reste moins de 21 jours"
trigger:
  - platform: time
    at: "03:00:00"
condition:
  - condition: numeric_state
    entity_id: sensor.certificate_expiry_monha_duckdns_org
    below: 21
action:
  - service: hassio.addon_restart
    data:
      addon: core_letsencrypt
  - delay:
      minutes: 2
  - service: homeassistant.restart
mode: single

Adaptez l'entity_id à votre capteur Certificate Expiry. Le seuil de 21 jours garantit que certbot sera sollicité avant la fenêtre de renouvellement effectif — avec certbot 4.0+, le renouvellement réel déclenche à 15 jours restants pour un certificat de 45 jours (1/3 de la durée). Si le renouvellement échoue ce soir-là (DNS indisponible, challenge raté), l'automatisation retentera le lendemain. Le délai de 2 minutes laisse certbot terminer l'échange ACME avant que HA redémarre et charge les nouveaux fichiers PEM.

Le service hassio.addon_restart est disponible uniquement sur Home Assistant OS ou Home Assistant Supervised (Supervisor actif). Il n'est pas disponible sur Home Assistant Container (Docker pur sans Supervisor).

HAOS sur Proxmox ou machine dédiée : certbot autonome

Si vous avez installé certbot directement sur l'hôte Proxmox ou une VM Debian/Ubuntu hébergeant HA, le renouvellement se gère indépendamment de Home Assistant. C'est la configuration traitée dans notre guide d'installation HAOS sur Proxmox 9.

Vérifier la configuration certbot actuelle

Connectez-vous en SSH sur votre hôte et vérifiez l'état des certificats gérés par certbot :

certbot certificates

La sortie indique la date d'expiration et le chemin des fichiers. Ensuite, vérifiez que la tâche de renouvellement est active :

systemctl status certbot.timer
# ou
crontab -l | grep certbot

Sur Debian/Ubuntu, l'installation via apt install certbot crée automatiquement un timer systemd qui exécute certbot renew deux fois par jour. C'est la configuration recommandée.

S'assurer que le cron tourne assez souvent

La fréquence recommandée est biquotidienne. Certbot n'émet une nouvelle requête ACME que lorsque le certificat entre dans sa fenêtre de renouvellement — exécuter deux fois par jour n'entraîne donc aucun doublon. Depuis certbot 4.0 (fin 2024), ce seuil est dynamique : 1/3 de la durée du certificat (15 jours pour un cert de 45j, ~21 jours pour 64j, 30 jours pour 90j). Les versions antérieures utilisaient un seuil fixe de 30 jours. Vérifiez votre version avec certbot --version. Si votre cron est mensuel (ex. le 1er de chaque mois), vous risquez une fenêtre sans renouvellement sur un certificat de 45 jours. Pour corriger :

# Éditer le crontab root
crontab -e

# Renouvellement à 3h00 et 15h00 chaque jour
0 3,15 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"

L'option --deploy-hook recharge Nginx après un renouvellement réussi — indispensable pour servir le nouveau certificat sans redémarrage complet. Adaptez à votre reverse proxy (Apache, HAProxy, Caddy).

Tester sans émettre de certificat

certbot renew --dry-run

Cette commande simule un renouvellement complet sans contacter les serveurs de production Let's Encrypt. Idéal pour vérifier que le challenge HTTP-01 ou DNS-01 fonctionne correctement après une modification de configuration réseau.

Si vous utilisez certbot ≥ 4.1.0, le support ACME Renewal Information (ARI) est intégré : certbot s'adapte automatiquement à la durée réelle du certificat émis par Let's Encrypt, sans ajustement manuel du cron. La commande certbot --version indique votre version.

Home Assistant Docker + Nginx Proxy Manager

Nginx Proxy Manager gère nativement le cycle de vie des certificats Let's Encrypt : il renouvelle automatiquement les certificats arrivant à moins de 30 jours d'expiration. Avec des certificats de 64 jours (à partir de février 2027), NPM renouvelle autour du jour 34 — confortable. Avec 45 jours (2028), il renouvelle vers le jour 15 — toujours correct.

Vérifier que le renouvellement automatique est actif

Dans l'interface NPM, allez dans SSL Certificates. Chaque certificat affiche sa date d'expiration. La colonne "Force Renew" permet un renouvellement manuel immédiat si nécessaire.

Pour confirmer dans les logs que les renouvellements passés ont réussi :

docker logs nginx-proxy-manager 2>&1 | grep -i "renew\|certbot\|acme"

Des lignes comme Renewing an existing certificate for monha.duckdns.org indiquent que le renouvellement automatique fonctionne.

Cas particulier : challenge HTTP-01 qui échoue

Si les logs montrent des erreurs connection refused ou timeout sur le port 80, le challenge HTTP-01 échoue. Vérifiez que le port 80 est bien exposé sur votre routeur et redirigé vers NPM — Let's Encrypt doit valider votre domaine via ce port même si HA n'est accessible qu'en HTTPS.

Si votre domaine est derrière Cloudflare Proxy (nuage orange activé), activez le challenge DNS-01 dans les paramètres avancés du certificat NPM avec votre clé API Cloudflare. Cela évite d'exposer le port 80.

Nabu Casa, add-on DuckDNS, Cloudflare Tunnel : rien à faire

Ces trois configurations gèrent le certificat à votre place. Le changement Let's Encrypt ne vous concerne pas directement.

Nabu Casa (HA Cloud) : le certificat est émis et renouvelé automatiquement par Nabu Casa sur leurs serveurs. Votre instance HA ne stocke pas de fichiers PEM locaux. Aucune action.

Add-on DuckDNS avec option Let's Encrypt activée : l'add-on DuckDNS de HAOS gère à la fois la mise à jour du domaine DuckDNS et le renouvellement du certificat Let's Encrypt. Il tourne en continu et lance certbot automatiquement. Vérifiez que l'option accept_terms est bien à true dans sa configuration — sans cela, certbot refuse d'émettre. Notez qu'un redémarrage de Home Assistant reste nécessaire pour que le nouveau certificat soit effectivement servi après renouvellement. Le blueprint d'alerte de la section suivante s'applique donc aussi à cette configuration — une alerte déclenchée signale soit que le renouvellement a échoué, soit que HA n'a pas été redémarré.

Cloudflare Tunnel : le tunnel Cloudflare utilise un certificat émis par Cloudflare, pas par Let's Encrypt. Le changement annoncé ne vous concerne pas. Pour en savoir plus sur cette configuration, consultez notre article sur les alternatives à Nabu Casa : Tailscale, Cloudflare Tunnel et WireGuard.

Blueprint d'alerte avant expiration : le filet de sécurité universel

Quelle que soit votre configuration, ce blueprint vous notifie 15 jours avant l'expiration du certificat. Il fonctionne même si votre renouvellement automatique est en place — une alerte qui se déclenche signale que le renouvellement automatique a échoué.

Prérequis : intégration Certificate Expiry

Si ce n'est pas encore fait, ajoutez l'intégration dans HA : Paramètres > Appareils et services > Ajouter une intégration > "Certificate Expiry". Entrez votre domaine (monha.duckdns.org ou votre propre domaine) sur le port 443. Un capteur sensor.certificate_expiry_[domaine] sera créé avec comme état le nombre de jours restants avant expiration.

Code YAML de l'automatisation

alias: "Let's Encrypt — Alerte expiration imminente"
description: "Notification quand le certificat SSL expire dans moins de 15 jours"
trigger:
  - platform: time
    at: "09:00:00"
condition:
  - condition: numeric_state
    entity_id: sensor.certificate_expiry_monha_duckdns_org
    below: 15
action:
  - service: notify.notify
    data:
      title: "Certificat SSL — expiration imminente"
      message: >
        Votre certificat Let's Encrypt expire dans
        {{ states('sensor.certificate_expiry_monha_duckdns_org') | int }} jours.
        Lancez le renouvellement depuis l'add-on Let's Encrypt ou via certbot renew.
mode: single

Remplacez sensor.certificate_expiry_monha_duckdns_org par l'identifiant exact de votre capteur, visible dans Outils de développement > États. Remplacez notify.notify par votre service de notification habituel (application mobile HA, Telegram, Pushover).

Le seuil de 15 jours est adapté aussi bien aux certificats actuels (90 jours) qu'aux futurs certificats de 45 jours : il reste toujours assez de temps pour intervenir manuellement en cas d'échec du renouvellement automatique.

Si vous utilisez HAOS avec l'add-on Let's Encrypt, couplez cette alerte à l'automatisation de renouvellement de la section 3 en réglant son seuil à 21 jours. L'alerte à 15 jours devient alors un signal d'échec : si elle se déclenche malgré l'automatisation à 21 jours, c'est que certbot a rencontré un problème (challenge raté, port 80 bloqué, DNS indisponible).

Checklist avant le 10 février 2027

  • Identifier votre configuration parmi les 4 cas décrits dans cet article
  • Ajouter l'intégration Certificate Expiry dans HA et créer le capteur sur votre domaine
  • Vérifier la date d'expiration actuelle — si inférieure à 30 jours, renouveler maintenant
  • HAOS add-on : créer l'automatisation de renouvellement automatique (seuil 21 jours)
  • certbot autonome : vérifier la fréquence du cron et passer à une exécution biquotidienne si nécessaire
  • NPM : vérifier les logs de renouvellement et confirmer que le port 80 est accessible
  • Créer le blueprint d'alerte à 15 jours comme filet de sécurité universel
  • Tester le renouvellement avec certbot renew --dry-run ou en démarrant manuellement l'add-on HA

Le passage aux certificats de 45 jours en 2028 n'exigera pas d'action supplémentaire si votre renouvellement est correctement basé sur le nombre de jours restants plutôt qu'un intervalle fixe. Les clients ACME modernes — certbot, Caddy, NPM — utilisent déjà ce mode par défaut depuis leurs versions récentes.

Si vous n'avez pas encore mis en place d'accès externe sécurisé à votre Home Assistant et souhaitez éviter de gérer les certificats vous-même, notre comparatif Tailscale, Cloudflare Tunnel et WireGuard face à Nabu Casa présente trois alternatives où le chiffrement est géré automatiquement.