Accéder a Home Assistant depuis l’extérieur en HTTPS avec un NDD Freebox et Let's Encrypt

HEllo,
Je m’auto congratule. J’ai re créé mon instance docker en ajoutant le path suivant ou sont stockés les certificats : /etc/letsencrypt/archive/mondomaine et ensuite corrigé mon configuration.yaml. Cela pointe vers les « vrais certificats ».

1 « J'aime »

Un message a été scindé en un nouveau sujet : Problème de certificat avec Lets Encrypt

Bonjour.

J’ai suivi cette methode avec bonheur il y a déjà un certain temps, et vu que c’est le tuto de reference, je me pose la question suivante:
Je renouvelle mon certificat un peu au petit bonheur, parfois quand il est périmé…
A chaque fois je suis obligé de lancer manuellement let’s encrypt en redirigeant temporairement le port 80 vers HA.

J’ai cru comprendre qu’on pouvait automatiser le lancement de let’s encypt dans une automatisation, ça je dois y arriver… mais dans ce cas là, faut il ouvrir le port 80 pour obtenir un nouveau certificat le temps du challenge?

Comment faites vous de votre coté pour gérer les renouvellements?

  • un truc tout automatisé ? (si c’est le cas, je serait preneur d’un tuto !)
  • une maj periodique ?

D’avance merci.

Salut

Il y a 2 méthodes pour le challenge:
image

Pour le dns, pas besoin d’ouvrir de port. Par contre il faut un nom de domaine (pas un sous-domaine) et configurer Let’s Encrypt.
Pour http, pas le choix, il faut ouvrir le port 80 pour HA.

Je suis en mode dns et j’ai une automatisation qui lance Let’s Encrypt une fois par semaine.

alias: Start Let's Encrypt
description: ""
trigger:
  - platform: time
    at: "03:00"
condition:
  - condition: time
    weekday:
      - mon
action:
  - service: hassio.addon_start
    data:
      addon: core_letsencrypt
mode: single

Concrètement avec un accès freeboxos donc une adresse du type https://monnomdedomaine.freeboxos.fr/:443 ça marcherait?

Non, car ç’est un sous-domaine de freeboxos.fr.
Tout ce qui est xxxx.freeboxos.fr, yyyy.duckdns.com, etc. sont des sous-domaines.
Il faut un nom de domaine: https://monnomdedomaine.fr

OK. donc pour ceux qui ont suivi ce tuto, et sont donc a priori en xxx.freeboxos.fr on est obligé de passer par du http et donc via le port 80.

Avec d’autres noms de domaine, ce tuto fonctionne aussi, mais il est possible d’utiliser une autre méthode. Avec freeboxos.fr pas le choix, il faut utiliser la métode challenge http.

Peut-on utiliser un autre port que le 80, et le laisser ouvert en permanence ? ou c’est un risque trop grand?

En attendant une « solution définitive » éventuelle pour ces problématiques de mise à jour périodique lorsqu’on est dans la configuration initiale du tuto de @McFly , j’ai réalisé les étapes suivantes

(je documente au cas où ça mérite d’entrer dans la section astuces du tuto en première page):
pensez à remplacer monnomdedomaine.freeboxos.fr par le votre dans les codes si dessous

En suivant le post suivant: Création de l'entité temps restant d'un certificat SSL

  • J’ai ajouté l’entité Certificate Expiry - Home Assistant
  • J’ai créé l’entité « temps restant » de mon certificat en ajoutant dans le fichier sensor.yaml des lignes suivantes:
- platform: time_date
  display_options:
    - 'date'
    
- platform: template
  sensors:
    cert_expiry_delay_monnomdedomaine_freeboxos_fr:
      friendly_name: "Expiration du certificat"
      unit_of_measurement: "Jour(s)"
      icon_template: mdi:timer-sand
      value_template: >-
        {{(strptime(states('sensor.cert_expiry_timestamp_monnomdedomaine_freeboxos_fr_443'), '%Y-%m-%dT%H:%M:%S+00:00')-strptime(states('sensor.date'), "%Y-%m-%d")).days}}
  • J’ai ajouté une petite carte mushroom-template pour aller avec le reste de mon dashboard :
    image
type: custom:mushroom-template-card
primary: Validité Certificat
secondary: '{{ states(entity) }} jours restant'
icon: mdi:certificate
entity: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
icon_color: |-
  {% if (states(entity)|float(0)) >= 30 %} 
  green
  {% elif (states(entity)|float(0)) >= 15 %} 
  yellow
  {% elif (states(entity)|float(0)) >= 0 %}  
  orange
  {% else %}
  red
  {% endif %}

  • ajout d’une automatisation pour envoyer une notification de rappel sur mon smartphone
alias: Surveillance - certificat https
description: Notification entre 20 et 15j avant péremption du certificat.
trigger:
  - platform: numeric_state
    entity_id: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
    below: 20
  - platform: numeric_state
    entity_id: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
    below: 19
  - platform: numeric_state
    entity_id: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
    below: 18
  - platform: numeric_state
    entity_id: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
    below: 17
  - platform: numeric_state
    entity_id: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
    below: 16
  - platform: numeric_state
    entity_id: sensor.cert_expiry_delay_monnomdedomaine_freeboxos_fr
    below: 15
condition: []
action:
  - service: notify.mobile_app_mon_smartphone
    data:
      title: certificat à renouveller
      message: >-
        Le certificat est bientôt périmé. Penser à lancer let's encrypt et à
        rediriger temporairement le port 80 dans les 15j à venir.
mode: single

J’aurai ainsi un rappel pour faire manuellement le renouvellement (4 fois par an…)

Bonjour,

en fait, je me suis aperçu qu’il y a l’integration: « Expiration du certificat » qui le fait directement.

Cordialement