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.
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 :
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.
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.
Cliquez ensuite sur le bouton BOUTIQUE DES MODULES COMPLEMENTAIRES en bas à droite.
Sélectionnez le module nommé NGINX Home Assistant SSL proxy.
Cliquez ensuite sur le bouton INSTALLER et patientez pendant que le plugin s'installe.
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 :
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.
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.
Cliquez sur l'icône en forme de dossier en haut à gauche pour parcourir l'arborescence et rechercher notre fichier de configuration.
Sélectionnez ensuite 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 :
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.
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 😉
Partager la publication "Passer Home Assistant en HTTPS"
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
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.
Bonjour Steven,
J'ai tenté d'autres solutions sans résultat probant, à tel point que j'ai tout laissé tombé.
A+
Nissa
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?
Hello. Mes certificats je les prends chez comodo ou chez gandi. Mais tu peux le prendre chez OVH 🙂