HTTPS / Android

Bonjour,

Mon petit problème est à la fois, concret et… déroutant.
Je voulais sécuriser au mieux (mode parano) mon accès ici à home assistant par l’intermédiaire du protocole HTTPS. Jusque là, l’intention est louable bien qu’un peu capilotractée car mon home-assistant n’est accessible qu’en local !

Avec l’aide notement de Pihole, Unbound, NPM et Proxmox (pour le pare-feu mais ça c’est pour plus tard), non sans mal j’ai réussi à créer mes certificats TLS/SSL, mon CA, installer tout ce joyeux bordel où il faut et ça fonctionne sur mon PC. Sauf…

SAUF sur Android !!! Dixit ChatGPT :

:exclamation: Pourquoi Android rejette le certificat ?

Depuis Android 7 (Nougat), les certificats racines ajoutés par l’utilisateur ne sont pas utilisés par défaut pour les connexions HTTPS des applications (notamment Chrome, Firefox, etc.), pour des raisons de sécurité.

Seules les applications système (ou explicitement configurées) acceptent les certificats utilisateurs.
Les navigateurs peuvent aussi avoir leurs propres règles.

Du coup, si jamais quelqu’un a une solution fonctionnelle, qu’il n’hésite pas à se faire connaître ^^

Je précise que la solution de rooter son téléphone c’est non pas plus que d’ouvrir sa box à internet pour obtenir un certificat Let’s Encrypt.
Etant chez Free, si je dois avoir un accès distant à mon HA, je passe en VPN Wireguard et c’est tout simple.

Merci de m’avoir lu.

Mais quelle idée !!

Ou tu l’ouvre sur l’extérieur et ok le ssl est indispensable autant en interne c’est vraiment inutile

Après si tu possèdes en pihole tu peux faire au plus simple en spoofant un nom de domaine avec ton DNS interne et générer un certificat ssl avec un challenge DNS

Bonjour,

A première vue, tu as créé une CA privée avec un certificat de CA autosigné et tu as signé le certificat serveur de HA avec cette CA privée.
Comme, sauf bidouille, tu ne peux pas enregistrer ton certificat de CA dans le magasin de ton téléphone Android, le certificat de ton serveur HA n’est pas considéré digne de confiance.
C’est comme une carte d’identité tamponnée avec un tampon de jouet.
Si tu tiens absolument à utiliser HTTPS pour les accès locaux, il te faut installer un certificat pour le serveur HA signé par une CA officielle. Il en existe de gratuits; voir détails sur le forum, notamment sur le renouvellement automatique des certificats qui ont une durée de vie assez courte.

1 « J'aime »

Dans le futur, si je veux faire des choses avec les assistants vocaux ou des trucs nécessitant une ouverture du serveur HA sur l’extérieur, là oui il me faudra en passer cette ouverture.
Mais avant cela, je ne vois pas l’intérêt d’ouvrir grand ses portes (et ses ports) exposées au monde entier uniquement dans un but de certifier une connexion.
Je trouve l’idée absurde et contre intuitive : « pour vous aider à sécuriser, ouvrez grand votre serveur… »

j’ai jamais dit cela c’est pour ça que j’ai parlé de challenge DNS qui permet de valider les certificats via un enregistrement DNS comme le supporte duckdns,OVH et bien d’autres

mais encore si tu n’ouvres pas de port le SSL n’a aucun intérêt

Oui, logique que ce soit un certificat « auto-signé » puisque le travail se fait en local.

Avec Windows, on arrive encore à implémenter un CA de confiance dans le magasin et ça roule.
Sous Android, c’est verrouillé de chez verrouillé ! En rootant son téléphone ça devrait être possible mais ça revient à s’auto-pirater.

Même si je pense que les certificats ssl/TLS en local sont pas forcément utile .

Le soucis sur android, c’est que même si tu peux ajouter un certificat, ce n’est pas dit que les applications l’acceptent, et tu auras sans arrêt un message « votre traffic est potentiellement surveillé », à part ça, rien de compliqué pour installer un certificat .

Une solution serait de passer par un autre type de challenge que le http pour avoir un certificat valide, mais ça veut dire être propriétaire du domaine, et le forcer à passer par l’intérieur … ( tu peux avoir des soucis avec les économiseurs de datas par exemple )

Alors cette solution m’intéresse :slight_smile:
Je ne sais pas si c’est bien facile mais comprenez que ma philosophie dans l’histoire c’est bien de renforcer ma connexion entre mon serveur et n’importe quel terminal client.

Même j’en convient qu’en utilisation local, les risques sont bien moindres car le pirate aura donc des entrées « locales », je trouve le challenge passionnant que de vouloir appliquer les même règles de sécurité, peu importe le contexte.

C’est comme si les « locaux » pouvez accéder au coffre fort de leur banque sur simple faciesse alors que d’autres, eux doivent présenter tout un dossier bien plus complexe.
2 poids 2 mesures.

Installer un certificat sur Android, c’est très simple en effet mais Android après n’en tient tout bonnement pas compte xD Même pas d’avertissement que le trafic n’est pas sure : Blocage direct ! ERR_CONNECTION_REFUSED

ça, ça veut dire que c’est pas un soucis de certificat … mais qu’il ne tape pas sur le bon serveur (ou que simplement le serveur refuse la connection)

Le port SSL 443 est ouvert et géré par NPM.

Pourtant la connexion s’initialise bien en HTTPS.

Je demande http://homeassistant.local et ça bascule sur le HTTPS.

Alors c’est précisément ce qui fonctionne déjà actuellement. Le point de blocage étant Android…

Certificats générés avec mkcert ou encore j’ai essayé avec cert-ca (outil de SimpleStep).

j’ai rarement vu une comparaison aussi pourrie :wink:
une fois que tu es dans la banque dans la salle des coffres le coffrre s’ouvre avec une simple clé c’est la porte vers l’exterieure qui est securisée, et comparer ton serveur de domotique avec la salle des coffres dune banque il n’y a qu’un pas

j’espère que tu as aussi prévu de mettre ton HA dans un vlan en filtrant uniquement le port https que tu vas exposer, quid des autres ports potentiellement attaquables ?

sinon pas bien compliqué tu installes l’addon duckdns qui vas te générer( et renouveller) tes certificats que tu paramètre dans ton home assistant, puis tu créé une règle dns dans ton pihole qui vas renvoyer ton domaine xxxxxx.duckcdns.org vers ton ip locale de ton ha 192.168.1.x
te voila avec un certificat valide et une communication locale

je ne pense pas que ce soit comparables … là tu compares un accès à travers un firewall, et un accès sans … la seule différence, c’est que ton paquet sera chiffré entre ton client et ton serveur … sauf que vue que ça ne passe qu’en local, à moins que tu ai un hacker sur ton réseau …

sans compter, que j’imagine que tu ne gères pas tous les autres ports ? ( j’espère que ton ha n’utilise pas directement le tls, mais tu utilises un reverse proxy pour faire l’intermédiaire … sinon, tu auras un soucis car certains appareils ne le supporteront pas … et si un jour tu en utilise un, tu devras tout défaire ) .

Si tu veux vraiment te protéger, il faudrait aussi bloquer tous les autres, ports, et mettre tes serveurs derrière un autre firewall pour être réellement « protéger » … Donc, sauf à investir des centaines d’€, énormément de temps … tu auras toujours « 2 poids 2 mesures » …

En général, on considère le lan comme « sur » … et il faut le garder lui sûr un maximum .


ceci dis, le certificat peut être nécessaire pour certaines choses, notamment les notifications .

1 « J'aime »

c’est pas du tout dont je parle

je viens de tester . et si tu installes un certificat sur android (sans root) .

Chrome le lit bien, et tu peux accéder à tes sites en local avec ton authorité de certification maison …

Mais ça affiche non stop

Oui, vu comme comme ça ca simplifie les choses et ça explique pourquoi je suis certainement en train de me prendre le choux pour rien ^_^;

Ne maîtrisant pas tout, non je n’ai pas de vlan et j’espérais trouver un solution « simple » lol

Du coup, ce serait mon certificat que ne serait pas bon :confused:

en fait, ce que tu fais là, c’est comme la blague du belge qui laisse la porte des toilettes ouvertes, pour pas qu’on regarde par le trou de la serrure … ( blague française, j’imagine que c’est l’inverse en belgique )

Tu tentes de sécuriser un tout petit truc, qui risque de t’apporter beaucoup plus de soucis que ça ne résouds de problèmes …

( car pareil, après un certificat, ça expire, donc il faut le renouveler … celui de ton authorité de certification va aussi expirée au bout d’un moment … sans compter que certains appareils ne permettent pas d’ajouter d’authorités … un shelly par exemple ) .


Et puis si j’ai bien compris, tu passes par npm ? donc, si tu vas sur http://homeassistant.local:8123 tu tombes sur l’interface sans https ?

1 « J'aime »