Salut à tous!
Aujourd’hui petit débat pour parler du HTTPS dans Gladys 4.
J’ai réfléchi au sujet, et voilà les différents cas que j’ai relevé:
Cas n°1: Première installation de Gladys
L’utilisateur accède à son Raspberry Pi via l’IP du Raspberry Pi sur son réseau local, il s’y connecte en HTTP pour sa première connexion. Cette approche n’a pas de risque significatif, il est en local et il s’agit d’une première connexion.
Cas n°2: Utilisateur "grand public"
J’entend par “utilisateur grand public” quelqu’un qui n’a pas forcément de connaissances et qui ne souhaite pas forcément mettre les mains dans le camboui. Il est juste passionné de tech, cherche une solution domotique respectueuse de sa vie privée, et veut une installation de Gladys stable et sécurisée.
Solution recommandée: Accès à Gladys via le Gateway pour les accès distants, et en local en http pour les accès locaux. Après rien ne l’empêche d’utiliser le Gateway même chez lui, étant donné que dans Gladys 4 l’interface du Gateway et l’interface locale seront la même.
Cas n°3: Utilisateur avancé
Cet utilisateur peut utiliser le Gateway comme l’utilisateur grand public, mais veut sûrement avoir un accès direct de l’extérieur afin de pouvoir bricoler son installation même à distance.
Solution recommandée: Connexion extérieur via un domaine + Let’s Encrypt.
Je propose d’arrêter de faire de l’auto-signé, avec un accès via l’IP comme actuellement, ce n’est pas propre et aujourd’hui avec Let’s Encrypt c’est super simple d’avoir un certificat gratuit. Je pense que c’est au projet de faire des choix d’architecture qui pousse à des comportements propres et sécurisé.
L’idée, c’est donc d’intégrer à Gladys le processus de récupération + renouvellement des certificats.
Il y a un super package NPM qui s’appelle Greenlock et qui semble faire l’affaire pour ce qu’on souhaite faire ici. Il s’intègre même avec Express
La question des services distants, et le MQTT
De ce que l’on a défini, le MQTT va jouer un rôle central dans la communication entre Gladys core et les services distants.
Ce que je propose: Lorsque l’utilisateur configure le MQTT (dans l’interface de Gladys, pas de CLI), il a 3 possibilités:
- MQTT tourne sans TLS
- MQTT tourne avec TLS et des certificats auto-signés généré automatiquement par Gladys.
- MQTT tourne avec TLS + un domain/subdomain + des certificats Let’s Encrypt généré par Gladys
Qu’en pensez-vous ?