Passer Home Assistant en HTTPS

Hello ! Je continue dans ma lancée des tutoriels consacrés à Home Assistant (HA). Aujourd'hui, je propose de vous guider étape par étape pour sécuriser Home Assistant en configurant un accès HTTPS avec un certificat signé par une autorité externe.

Home Assistant en HTTPS
Home Assistant en HTTPS

Pourquoi passer Home Assistant en HTTPS ?

Home Assistant est une solution puissante pour la domotique qui permet de contrôler et d'automatiser divers appareils domestiques. Pour garantir la sécurité des données et des commandes, il est essentiel de protéger votre installation Home Assistant avec HTTPS, surtout si vous l'exposez à l'extérieur de votre réseau local. Passer Home Assistant en HTTPS permet, en effet, de chiffrer les communications entre votre serveur et les appareils clients, réduisant ainsi les risques d'interception par des tiers malveillants. J'imagine que vous voyez là l'intérêt de la chose ?! Alors, au boulot !

Les prérequis

Dans ce tutoriel, on va utiliser un certificat obtenu à l'aide d'une autorité de certification externe. Sachez que vous pouvez aussi le faire avec un certificat gratuit Let's Encrypt, mais cela ne sera pas l'objet de ce billet. Nous allons également avoir besoin d'un nom de domaine : j'utiliserais pour ma part un nom de domaine acheté chez un registraire de nom de domaine, mais il est possible d'utiliser une solution type DuckDNS.

En résumé, pour notre tuto, nous allons donc avoir besoin de :

  • Un accès à Home Assistant avec un compte administrateur pour pouvoir modifier la configuration et installer des modules
  • Un nom de domaine, pointant sur l'adresse IP de votre connexion Internet
  • Un certificat SSL pour ce domaine
  • Un accès au dossier ssl de HA (via l'utilisation du plugin Samba Share par exemple)
  • Une solution d'édition des fichiers de configuration de HA (via l'utilisation du plugin File editor par exemple)

Vous aurez aussi besoin d'effectuer une redirection de port sur votre routeur/box afin que les requêtes externes arrivent sur votre machine Home Assistant. Sur ce point, je ne pourrais pas vous aider car la configuration dépend de votre fournisseur d'accès à Internet et de votre box.

Vous avez tout sous la main ? Et bien c'est parti.

Copie du certificat et de sa clé sur HA

La première étape pour passer Home Assistant en HTTPS va être la copie du certificat et de sa clé sur notre machine Home Assistant. Pour cela, on va utiliser le module complémentaire Samba Share. Si vous n'avez pas encore installé ce plugin, je vous renvoie à mon article sur les premiers pas avec Home Assistant, dans lequel ce point est abordé.

Ouvrez un explorateur de fichiers et entrez l'adresse de votre HA dans la barre d'adresse, comme ceci : \\IP_HA\ssl. Par exemple, dans mon cas : \\192.168.1.80\ssl puis entrez l'identifiant et le mot de passe que vous avez définis dans la configuration du plugin Samba Share :

Entrez vos identifiants pour accéder au dossier partagé de HA
Entrez vos identifiants pour accéder au dossier partagé de HA

Une fois que la fenêtre s'ouvre, copiez dans le dossier le fichier certificat et celui de la clé. Pensez à bien noter le nom des fichiers, nous allons en avoir besoin ensuite.

Copiez le certificat et la clé dans le dossier 'ssl' de HA
Copiez le certificat et la clé dans le dossier 'ssl' de HA

Installation du module Nginx Home Assistant SSL proxy

L'étape suivante consiste à installer le module complémentaire Nginx Home Assistant SSL proxy. Pour cela, connectez vous sur votre instance HA avec un utilisateur disposant des droits d'administration, puis cliquez en bas à gauche sur Paramètres puis sur Modules Complémentaires.

Le menu paramètres permet d'accéder aux modules complémentaires
Le menu paramètres permet d'accéder aux modules complémentaires

Cliquez ensuite sur le bouton BOUTIQUE DES MODULES COMPLEMENTAIRES en bas à droite.

La page de gestion des modules complémentaires
La page de gestion des modules complémentaires

Sélectionnez le module nommé NGINX Home Assistant SSL proxy.

Sélectionnez le module NGINX Home Assistant SSL proxy
Sélectionnez le module NGINX Home Assistant SSL proxy

Cliquez ensuite sur le bouton INSTALLER et patientez pendant que le plugin s'installe.

Installation du plugin NGINX Home Assistant SSL proxy
Installation du plugin NGINX Home Assistant SSL proxy

Une fois le module installé, cliquez sur l'onglet Configuration pour le configurer. Renseignez votre domaine et le noms des fichiers (certificat et clé). Votre configuration doit alors ressembler à ceci :

Configuration NGINX SSL
Configuration NGINX SSL

Cliquez sur ENREGISTRER puis revenez sur l'onglet Info et démarrez le module complémentaire, en cochant le démarrage automatique et le chien de garde.

Activez le démarrage automatique et le chien de garde, et démarrez le module
Activez le démarrage automatique et le chien de garde, et démarrez le module

Bon, on a pas mal avancé mais ce n'est pas encore terminé. On va devoir maintenant éditer le fichier de configuration principal de HA. Pour cela, nous allons avoir besoin du module complémentaire File editor. Si vous n'avez pas installé ce plugin, je vous renvoie là encore à mon article sur les premiers pas avec Home Assistant. Ouvrez donc le plugin File editor en utilisant le raccourci à gauche (si vous l'avez activé) ou bien en allant dans les modules complémentaires.

Ouvrez le plugin 'File editor'
Ouvrez le plugin 'File editor'

Cliquez sur l'icône en forme de dossier en haut à gauche pour parcourir l'arborescence et rechercher notre fichier de configuration.

Cliquez sur le dossier pour parcourir l'arborescence
Cliquez sur le dossier pour parcourir l'arborescence

Sélectionnez ensuite le fichier configuration.yaml

Sélectionnez le fichier 'configuration.yaml'
Sélectionnez le fichier 'configuration.yaml'

Ajoutez ensuite la configuration suivante à votre fichier configuration.yaml en prenant soin d'adapter, bien évidemment le nom des fichiers de certificat et de clé (attention à bien respecter l'indentation des lignes, sinon cela ne fonctionnera pas).

# passage en HTTPS
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24
  ssl_certificate: /ssl/www.domaineha.ovh.pem
  ssl_key: /ssl/www.domaineha.ovh.key.pem

Une fois que c'est fait, vous pouvez enregistrer le fichier avec le bouton rouge contenant la disquette, en haut à droite. Voici, pour exemple, mon fichier de configuration :

La configuration HTTPS dans le fichier configuration.yaml
La configuration HTTPS dans le fichier configuration.yaml

On y est presque ! Il nous reste maintenant à redémarrer Home Assistant. Pour cela, cliquez en bas à gauche sur Paramètres, puis en haut à droite sur les trois points et sélectionnez Redémarrer Home Assistant.

Redémarrer Home Assistant
Redémarrer Home Assistant

Sélectionnez ensuite l'option Redémarrer Home Assistant et confirmez la demande de redémarrage. Une fois que Home Assistant aura redémarré, il sera accessible avec son adresse HTTPS !

C'est ainsi que s'achève ce petit tuto. J'espère qu'il vous aura été utile. Si vous avez des questions, l'espace commentaires est ouvert 😉

Sandstorm

Ingénieur Systèmes passionné d'informatique et de High-Tech, Sandstorm a créé JusteGeek.fr en 2013. Il aime les geekeries en tout genre. "Si un produit s'allume c'est un bon point. S'il est connecté, c'est encore mieux !"

Vous aimerez aussi...

5 réponses

  1. Nissa dit :

    Bonjour,
    Merci pour ce tuto que j'ai suivi scrupuleusement, mais ça ne fonctionne pas 🙁
    A la connexion, on me demande de sélectionner un certificat (4 sont proposés) et quelque soit le choix, "Site inaccessible ERR_BAD_SSL_CLIENT_AUTH_CERT)"
    J'ai bien créé les certificats via let's Encrypt (à 2 reprises)
    Erreur dans le journal de Nginx => 2024/10/11 18:54:26 [error] 128#128: *6 upstream prematurely closed connection while reading response header from upstream, client: 109.215.xx.xx, server: xxx.duckdns.org, request: "GET /favicon.ico HTTP/2.0", upstream: "http://172.30.32.1:8123/favicon.ico", host: "xxx.duckdns.org", referrer: "https://xxxx.duckdns.org/"
    Merci pour votre aide
    Nissa

    • Steven dit :

      Hello Nissa ! Je pense que si tu utilises let's encrypt, tu devrais plutot suivre une doc orientée Let's Encrypt car il y a surement des specificité, notamment pour le renouvèlement automatique.

  2. Nissa dit :

    Bonjour Steven,
    J'ai tenté d'autres solutions sans résultat probant, à tel point que j'ai tout laissé tombé.
    A+
    Nissa

  3. ALEXIS dit :

    Bonjour et merci pour ce tuto, tu fais comment pour obtenir ton certificat? moi j'ai créé un nom de domaine chez ovh et je passe par cloudflare mais comment obtenir un certificat?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.