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

Si vous avez la possibilité d’avoir un nom de domaine par votre FAI (merci Free), vous pouvez vous en servir ici pour ne pas passer par DuckDNS mais vous pouvez aussi vous décidez d’acheter un Nom de Domaine (ndd) auprès des services le proposant.

Prérequis, matériels nécessaires & utilisés :

  • Version de HA : V0.113.
  • Version de let's Encrypt : V 4.11.0.
  • Avoir installé File Editor et Samba Share.
  • Avoir un Nom de Domaine (Si autre que Freebox).
  • Si Freebox, il faut une adresse IP fixe V4 full-stack
  • Redirection du port TCP 80 vers 80 de Home Assistant (le temps du challenge).
  • Redirection du port 443 vers 8123 de votre Home Assistant.
  • Si vous avez déjà suivi l’article sur DuckDNS, supprimer les fichiers fullchain et privekey du dossier SSL.

Créer votre nomdedomaine.freeboxos.fr

NOTA : Cela peut paraître bête, mais je rappelle qu’il faut être chez Free pour avoir un NDD Freebox.

Connectez-vous à votre interface Freebox http://mafreebox.freebox.fr/ puis dans “paramètre” (en mode avancé) cliquer sur “Nom de Domaine”.

Je vous laisse suivre la procédure qui est très bien expliquée ici.

Installation / Configuration.

Installation.

Suivre la procédure d’installation d’un add-on officiel.

NOTA : Une fois la manipulation effectuée, vous pouvez stopper l’add-on (il le fait tout seul normalement) et fermer la redirection de votre port 80. Il faudra les réactiver si vous avez besoin de réactiver votre Key SSL.

LetsEncrypt-HA

Configuration.

Dans config, mettre un e-mail valide, puis dans domaine, mettez votre ndd.freeboxos.fr ou un autre si vous avez un autre fournisseur.
Laissez le reste comme ça.

email: votremail@gmail.com
domains:
  - votrendd.freeboxos.fr
certfile: fullchain.pem
keyfile: privkey.pem
challenge: http
dns: {}

Cliquez sur “SAVE” puis remonter en haut pour cliquer sur “START“. N’hésitez pas à redescendre en bas de page pour suivre l’installation avec les logs.

Modification dans l’UI.

Rendez-vous dans configuration, général puis en bas vous avez de quoi rentrer votre URL externe et URL interne.

Modification de configuration.yaml.

Dans configuration.yaml et ajouter ceci.

http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Ajout Configuration Lets EncryptAjout Configuration Lets Encrypt

Après un redémarrage, vous devriez pouvoir accéder à votre Home Assistant depuis l’extérieur.
Pour essayer, désactiver le Wifi de votre Smartphone puis connectez-vous à votre NDD.

Conclusion.

Vous avez maintenant un accès depuis l’extérieur à votre système domotique. Attention cela veut dire que votre système domotique peut être exposé à des attaques.

N’OUVREZ jamais une DMZ vers votre serveur, sauf de manière très temporaire le temps de vérifier si un problème est lié à l’ouverture de ports.

Trucs & astuces.

Loopback chez Orange.
Chez Orange et la Livebox vous pouvez avoir des problèmes de Loopback, comprendre quand on se connecte du réseau local vers un autre périphérique du réseau local en passant par un serveur externe (cas du nom de domaine).

Je vous propose de suivre cet article.

Mise à jour : (détails)

  • 02/05/2022 : Ajout prérequis full-stack (@fredarro)
  • 07/08/2021 : Mise a jour (@McFly)
  • 28/12/2020 : Mise à jour du lien de redirection de port (@Clemalex)
  • 02/12/2020 : V2 (McFly)
  • 08/05/2020 : V1 Création de l’article. @McFly

Sources :

14 « J'aime »

Bonjour, pour commencer je tiens à remercier le créateur les contributeurs de ce tutoriel. J’essaye de le suivre mais je pense que je loupe une étape car cela ne fonctionne pas pour moi. Je ne sais pas si ça vient de la configuration de ma Freebox pour lequel j’ai ouvert les ports ou de la génération de ma clé cryptage. Je sollicite donc votre aide, en vous remerciant d’avance de l’attention portée à ce message. PS voici mes lobes lors de la génération du cryptage:

Citation [s6-init] making user provided files available at /var/run/s6/etc…exited 0.
[s6-init] ensuring user provided files have correct perms…exited 0.
[fix-attrs.d] applying ownership & permissions fixes…
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts…
[cont-init.d] file-structure.sh: executing…
[cont-init.d] file-structure.sh: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[09:03:37] INFO: Selected http verification
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for xxxx.freeboxos.fr
Waiting for verification…
Cleaning up challenges
Non-standard path(s), might not work with crontab installed by your operating system package manager
IMPORTANT NOTES:

  • Congratulations! Your certificate and chain have been saved at:
    /data/letsencrypt/live/xxxx.freeboxos.fr/fullchain.pem
    Your key file has been saved at:
    /data/letsencrypt/live/xxxx.freeboxos.fr/privkey.pem
    Your cert will expire on 2020-10-27. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot
    again. To non-interactively renew all of your certificates, run
    « certbot renew »

  • Your account credentials have been saved in your Certbot
    configuration directory at /data/letsencrypt. You should make a
    secure backup of this folder now. This configuration directory will
    also contain certificates and private keys obtained by Certbot so
    making regular backups of this folder is ideal.

  • If you like Certbot, please consider supporting our work by:

    Donating to ISRG / Let’s Encrypt: Donate - Let's Encrypt
    Donating to EFF: Support EFF's Work on Let's Encrypt | Electronic Frontier Foundation

    [cont-finish.d] executing container finish scripts…
    [cont-finish.d] done.
    [s6-finish] waiting for services.
    [s6-finish] sending all processes the TERM signal.
    [s6-finish] sending all processes the KILL signal and exiting.

Citation

Vu les logs ton certificat c’est bien déroulé.

Avez tu essayé avant avec DuckDNS ? Si oui avez tu supprimé les fichiers dans dossier SSL?

Sinon a tu accès a ta freebox via le ndd et le port d’acces stipulé dans tes réglages de la Freebox.

As tu bien redirigé le 8123 vers ton 8123 de ton système et le 443 vers le 8123.

Tapes tu https://ndd.freeboxos.fr ou HTTPS://ndd.freeboxos.fr:8123 ? Il ne faut pas mettre 443 derrière n’y le 8123.

Qu’as tu déclaré dans la configuration , général de HA.

Bonne journée

Merci pour la rapidité de votre réponse. Si tout d’abord je tiens à vous remercier pour la rapidité de votre réponse. Si non je n’ai jamais essayé l’extension DuckDNS. Et je suis sûr qu’il n’y avait rien qui traîne dans le dossier SSL car j’ai supprimé mes précédentes tentatives. En ce qui concerne le NDD j’arrivais bien à accéder à ma Freebox en l’utilisant et à mon Nass. Sur la gestion des ports j’avais bien redirigé le port 443 vers le 8123 mais je n’avais pas ouvert le 8123 vers le 8123. Je les ai ouverts deux fois car je ne sais pas si les fonds TCP ou UDP. Pour me quand connecté je renseigne mon adresse Dans mes options générales j’ai renseigné:
-https://ndd.freeboxos.fr Pour l’URL externe
-http://192.168.0.2:8123 pour l’URL internent
et ceci ne fonctionne toujours pas.

Bonjour je m’attelle de nouveau à ce problème, je pense que ma Freebox est bien configurée et je remet plus en doute ma configuration de HA, ou mon certificat. Y a t-il possibilité de tester le « https » depuis le réseau local pour exclure définitivement la Free du problème et ciblé plus précisément mon problème?
Si je tente de me connecter depuis le réseau local en mettant https devant mon adresse local j’obtiens

Une erreur est survenue pendant une connexion à home:8123. SSL a reçu un enregistrement qui dépasse la longueur maximale autorisée.
Code d’erreur : SSL_ERROR_RX_RECORD_TOO_LONG

Mais je ne sais pas si on peut se connecter en https depuis le local.
Je vous remercie d’avance

Salut, on peut se tutoyer c’est plus simple.

Tu peux essayer en HTTPS depuis ton réseau local ça marche. Essai sinon ton https:toniplocal:8123

Merci de ta réponse rapide.
donc en local
http:IPlocal:8123: ok
https://Ip local:8123

Échec de la connexion sécurisée
Une erreur est survenue pendant une connexion à 192.168.0.2:8123. SSL a reçu un enregistrement qui dépasse la longueur maximale autorisée.
Code d’erreur : SSL_ERROR_RX_RECORD_TOO_LONG

Je suppose que ça vient de mon certificat. Y a t-il un moyen de le tester ?

peut être ici.

Bonjour @Nyco ,
tu as suivi le tuto depuis le forum ou depuis le site ?
Car sur le forum il manque une étape indispensable :
ajouter la configuration dans le fichier configuration.yaml

je préviens l’auteur

@McFly il manque la partie de la configuration du fichier configuration.yaml qui contient les chemins des clés.

Peux tu éditer le post et les ajouter ?

Merci il me renvoie « connections ssl impossible »

ok bizarre car c’est un envoi automatique. je re colle

Merci pour l’info

voila c’est fait l’ami merci a toi

Ok merci bien le problème venais bien configuration.yaml
je vous remercie tout les deux!

Parfait ! :+1:t2: :clap:

Bonjour,
J’ai bien suivie le tuto et vérifié à plusieurs fois que je n’ai rien oublié, mais je rencontre un problème: Je modifie mon fichier de config comme décrit dans le tuto en ajoutant :
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Mais après le démarrage ne se fait plus, c’est à dire que je ne peux plus me connecter à Home Assistant avec mon PC, pour y arriver de nouveau je suis obligé d’effacer les lignes ajoutées dans le fichier de config.
Quelqu’un aurait un idée d’où cela pourrais venir?

L’indentattiinnest bonne ?

http:
ssl_certicate etc etc
ssl_key: etc etc

Tu a bien les deux fichiers dans le dossier ssl ?

As tu ensuite configuré dans configuration puis général.

URL externe https://ndd.com
URL interne https://192.168.x.x

J’ai effacé les fichiers avant l’installation de let’s encrypt, et après l’installation de let’s encrypt les fichiers sont de nouveaux créés. Et j’ai bien renseigné les URL dans la pages de config.
Mon problème est que même en local je n’arrive plus à me connecter à Home Assistant

C’est très étrange que même en local cela ne marche pas…
Quand le fichier config contient les balises ssl, essaie tu d’y accéder en connexion sécurisée ?

Dès l’instant que tu mets les balises, il faut s’y connecter avec http**s**//@ip:8123.

Peux être un problème de chemin.

Partage ton log quand les balises sont présentes.

je me connecte en tapant juste l’adresse ip: 192.168.1.38:8123
que veux tu que je mettes après le http. A quoi correspond S//@ip:8123 ?