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

tu peux essayer depuis un pc de te connecter sur le Point d’acces de ton Smartphone en donnée mobile.
Et tester ?

Oui mais pas avant ce soir, je suis au boulot :frowning:

Petite avancée, j’ai installé Firefox sur le téléphone et je me connecte sans problème avec l’URL en HTTPS.

J’ai dû faire une faute de frappe au login dans Chrome et vu que j’ai coché « Se souvenir de moi », il doit toujours utiliser le mdp stocké, je vais voir en virant les cookies.

J’ai aussi désinstallé / réinstallé l’appli HA mais il ne veut pas se connecter. Peut-être qu’il faut être en WiFi pour la première connexion.

Comportement très bizarre, à force de tenter des trucs, j’ai finalement eu la mire de connexion sur le navigateur Chrome, j’ai bien mis le bon user/password mais la connexion n’a pas abouti, je suis tombé sur l’écran avec le compte à rebours pour retenter la connexion.
Alors qu’en me connectant avec Firefox, ça marche très bien. Je vois le token généré par la session Chrome. Je l’ai supprimé mais ça bloque toujours.
Vraiment bizarre ce comportement.

non,
C’est une vieille version d’android sur ton smartphone ?
J’ai eu un problème similire sur un android antérieur a 7 j’ai ajouter les certificats lets encrypt a la main.
Tu peux vider le cache de chrome et de l’appli homeassitant en meme temps,… ?

Non, j’ai un Pixel 6 donc je suis on ne peut plus à jour :smiley:

Cache de Chrome et de HA vidé mais toujours les mêmes problèmes.

Je refais un test avec l’appli. Cette fois, je peux me connecter, paramétrer certaines fonctionnalités comme la position, les notifications mais quand vient le temps de charger le dashboard :

Logo HA
Unable to connect to Home Assistant
Retrying in xx seconds

je testerai ce soir avec le téléphone de ma femme et/ou de ma fille.

Et quand j’utilise Firefox, j’accède donc bien à HA et parfois je vois des notifications de tentative de connexion depuis l’adresse IP de mon téléphone avec un refus à cause de l’authentification alors que c’est le bon user/pwd qui est utilisé.

Encore une question, dans le tuto, lors de la configuration des URLs interne et externe, c’est l’URL en HTTPS et avec le nom de domaine qui est utilisée pour l’URL externe et l’adresse IP locale et le port 8123 en HTTP pour l’URL interne.

Mais quand je fais ça, HA me donne cette erreur :

Invalid local network URL

You have configured an HTTPS certificate in Home Assistant. This means that your internal URL needs to be set to a domain covered by the certficate.

Et de toute façon, l’URL locale et le port 8123 ne marchent plus même sur mon PC connecté en Ethernet

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