Automatisation du renouvellement de certificat avec freebox revolution et letsencrypt

Bonjour,

Suite à un autre sujet, j’en profite pour rebondir dans un sujet spécifique.

Mon problème

Comment renouveler automatiquement mon certificat https ?

Ma configuration


HAOS sur un mini PC
Acces internet via une Freebox (revolution)
Acces en HTTPS avec certificat généré par l’addon letsencypt
Nom de domaine (en fait un sous domaine) en https://xxxxx.freeboxos.fr


Dans mon cas sur freebox (mon nom de domaine est en fait un sous domaine en http://xxxx.freeboxos.fr ) le renouvellement de certificat passe par un challenge http avec l’addon Letsencrypt (pas possible d’utiliser l’autre type de challenge a priori car c’est un sous domaine).

Il me faut donc systématiquement ouvrir le port 80 pour que le challenge passe, puis le refermer (car je préfère éviter de laisser un port 80 ouvert depuis la box vers le serveur HA…)

Du coup je n’ai pas pu créer d’ automatisation de renouvellement (car sinon le renouvellement ne passe pas si le port n’est pas ouvert) mais j’ai tout de même une alerte avant que le certificat n’expire…


Mes questions pour les pros:

  • Vous me confirmez bien que c’est pas terrible de laisser une redirection ouverte vers le port 80 en permanence ? Et que ma precaution n’est pas complètement inutile ?
  • Y aurait-il moyen avec une Freebox Revolution d’automatiser cette ouverture / fermeture de la redirection du port 80 depuis HA pour pouvoir automatiser toute la chaine ?

Salut,
je n’ai pas de solution à ton problème. Mais avec un NDD chez OVH pour quelques euros/an, tu peux utiliser le challenge dns et pas besoin d’ouvrir le port 80.

1 « J'aime »

Salut

Alors, ça dépend… :grin:

Je vais essayer de faire une analogie.
Tu peux comparer l’ouverture d’un port comme un porte d’entrée dans ta maison.
A chaque fois que tu ouvres un port, ç’est comme si tu ajoutes une porte d’entrée dans ta maison.
Plus tu as de portes, plus il y a de moyens de rentrer chez toi.
Maintenant, sur les portes il y a des serrures. Pour les ports, il faut un protocole de communication. Mais le port 80, ç’est du HTTP qui est le plus connu…
Ensuite dans le cas de HA, il faut un utilisateur avec mot de passe.
Mais il est possible qu’ils existent des failles de sécurité exploitables.

Bref, si tu sais ce que tu fais, tu ne risques pas grand chose. Par contre, si tu ne sais pas, tu peux créer une porte d’entrée sans serrure, ou oublier de la fermer, ou perdre tes clés… et n’importe qui peut rentrer…

Perso, je déconseille l’ouverture d’un port en permanence.

Il faudrait voir s’il y a une API pour ça. Regarde si ç’est possible avec l’intégration.

Après comme le dit @WarC0zes, un nom de domaine, ç’est 15-20€ par an. Et tu peux changer de FAI tranquillement :wink:

Pour moins même :wink:
3-6€ / an chez OVH pour du .ovh ou .fr

1 « J'aime »

En effet, chez OVH on trouve un nom de domaine en .fr pour ~8/9 € TTC par an… (après la première année qui est en promo ou gratuite suivant la durée d’engagement)

Exemple sur 10 ans pour faciliter la division :wink:

Salut,

Non pas du tout simplement que pour utiliser le challenge DNS il faut que ton registrar propose une api pour manipuler le DNS et ajouter des enregistrements a la volée ce que ne permet pas free
Un conseille acheter un vrai nom de domaine chez un registrar qui propose des API ouvertes genre OVH, ça coûte 2€ par an (oui par an)

Elle l’est puisque c’est l’addon let’s encrypt qui écoute sur le port 80 et qu’en gros il ne vas écouter que pendant le renouvellement soit quelques instants tous les 90 jours

1 « J'aime »

Alors c’est pas bien clair pour moi.

Ma précaution c’est de ne pas laisser ouvert le port en permanence.
Je ne suis pas inquiet de le laisser ouvert le temps du challenge puis de le fermer.

Laisse le ouvert tu ne crains rien

Même ouvert rien ne vas écouter dessus puisque let’s encrypt est ‹ ‹ eteint › › donc rien ne répond c’est comme ci rien est ouvert

1 « J'aime »

Je ne l’ai pas expliqué, mais lorsque tu ouvres un port sur une machine, il faut aussi que sur cette machine, il y ai un service qui « écoute » le port. Dans le cas de let’s encrypt, le service écoute le port que lorsqu’il est démarré, puis s’éteint tout seul. Du coup, il n’y a plus rien qui « écoute », donc plus aucune réponse non plus.
ç’est comme si tu essaie d’ouvrir une serrure, mais la clé tourne dans le vide.

2 « J'aime »

Du coup si je comprend bien:

  • ce n’est pas une très bonne idée de laisser un port ouvert en permanence sur une machine (c’est laisser exposé une porte d’entrée), mais la porte n’est tout de même pas grande ouverte, encore faut il savoir l’ouvrir.
  • on a enlevé une barrière de protection, donc la seule barrière qui reste ensuite c’est le serveur HA lui même qui normalement est protégé, mais on n’est pas à l’abri d’une vulnérabilité.
  • le seul service qui écoute sur ce port c’est let’s encrypt, qui est en sommeil 99.9% du temps, donc si quelqu’un cherche à communiquer sur ce port il ne trouvera personne pour répondre.

J’ai donc deux options:

  • payer un NDD pour pouvoir faire du challenge DNS en n’exposant pas le port 80.
  • laisser la redirection du port 80 en permanence ouverte et espérer qu’il n’y a pas de faille de sécu majeure (et ne pas oublier de faire attention si j’ajoute d’autres trucs sur cette machine qui écouteraient aussi le port 80…)

Merci à tous pour vos explications, j’y vois un peu plus clair… et laisser le port 80 ouvert me fait un peu moins peur…

Y’a vraiment aucun risque dans le cas actuel
Évite d’ajouter un service qui écouterai sur le port 80 ça plaira pas à let’s encrypt qui vas se vautrer
Tu ne peux avoir qu’un seul service qui écoute le même port

1 « J'aime »

Merci à tous les trois @WarC0zes @Giga77 et @ddfdom pour vos info et vos propositions…

Il faudrait pouvoir cocher tous vos posts en solution car il y a des pistes et des conseils pertinents dans chacun… :+1:

Et pour ceux qui tomberaient sur ce fil à l’avenir avec une recherche et qui se demanderaient comment automatiser ça, il y a déjà plein de très bons exemples sur le forum, par exemple là: Expiration Let's Encrypt - #14 par WarC0zes

Et basé là dessus, chez moi ça donne ça:

alias: Certificat SSL Renouvellement
description: |-
  Démarrage auto de Let's encrypt à 3h
  si certif expire dans moins de moins de 21j 

  Puis redémarrage de HA après 3 min 
triggers:
  - at: "03:00:00"
    trigger: time
conditions:
  - condition: template
    value_template: >-
      {{ (states('sensor.cert_expiry_timestamp_url_fr')
      | as_datetime or now()) - timedelta(days=21) < now()}}
actions:
  -  action: hassio.addon_start
    data:
      addon: core_letsencrypt
    metadata: {}
# petit script pour mémoriser un log "maison".
  - action: script.warning_publish
    metadata: {}
    data:
      message: Renew HTTPS
  - delay:
      hours: 0
      minutes: 3
      seconds: 0
      milliseconds: 0
  - action: homeassistant.restart
    metadata: {}
    data: {}
mode: single
1 « J'aime »

Super le script de renouvellement automatique. Tu pourrais partager le action: script.warning_publish aussi stp ?
Merci !

Franchement fais un redémarrage tous les dimanches a 1h du mat et ça suffit
Tout le reste c’est vraiment inutile
Certbot fait déjà rour cela au moment de renouveller

C’est hors sujet dans ce post, mais le fonctionnement est le suivant:

  • j’ai quelques input_text (6 en tout, mais on en met tant qu’on veut stocker d’evenement)
  • j’ai un script « publish » qui est appellé dans une automatisation et qui va:
    • copier le contenu des input_text N dans le N+1
    • ecrire dans l’input_text 1 l’heure et le message passé en paramètre
  • j’ai un script « clear » qui efface le contenu de tous les input text
  • j’affiche dans mon dashboard tous les input text (6 lignes) et un bouton pour effacer(appeler le script « clear »)
  • j’ajoute dans certaines automatisation mon script pour logger une ligne dans mon dashboard avec l’heure et le message.

Je peux ainsi conserver/effacer la trace de 6 messages sur le dashboard. C’est un complement à certaines notifications…
image