TLS werkt niet: MQTT-Broker voor Homey, Locatie & Aanwezigheid en Owntracks

Op dit forum heb ik het een en ander gelezen aan alternatieven voor geolocatie. Mijn keuze is gevallen voor het gebruik van Owntracks in combinatie met MQTT. Het instellen voor een onbeveiligde verbinding is gelukt, maar het instellen van een TLS-verbinding is me niet gelukt.

Hieronder staan de instellingen die ik voor een beveiligde verbinding met TLS heb geprobeerd, maar niet werkend heb gekregen:

De apps:

  • MQTT-Broker voor Athom Homey
  • Locatie & Aanwezigheid voor Athom Homey
  • Owntracks voor Android

MQTT-Broker voor Athom Homey [Instellingen]
Poortnummer voor een onbeveiligde verbinding: 1883
Aanzetten van een beveiligde verbinding: AANGEVINKT
Poortnummer voor een beveiligde verbinding: 8883
Ook onbeveiligde verbindingen toestaan: AANGEVINKT

Tabblad gebruikers bewerken:
Username: Owntracks
Password: ****

Tabblad sessie instellingen:
CommonName die wordt gebruikt voor het genereren van een certificaat: statisch IP-adres
Certificaat bewaard
Broker gestopt en gestart

Locatie & Aanwezigheid voor Athom Homey [Instellingen]
Gebruik een MQTT broker naast HTTP: AANGEVINKT
IP-address of DNS: statisch IP-adres (zelfde als de CommonName uit de MQTT-Broker)
Poortnummer voor een beveiligde verbinding: 8883
Beveiligde verbinding (TLS) AANGEVINKT
Gebruikersnaam: Owntracks (username en wachtwoord zelfde als in de MQTT-Broker)
Wachtwoord: ****

Owntracks voor Android [Instellingen]
Username: testUser
Password: leeg, ik weet eigenlijk niet waarvoor dit dient of waar dit wordt gebruikt?
Device ID: s20
Tracker ID: TU

Host: statisch IP-adres (zelfde als de CommonName uit de MQTT-Broker en Locatie & Aanwezigheid)
Poortnummer: 8883
Client ID: testS20

TLS switch: ON
CA certificaat: het CA certificaat dat in MQTT-Broker voor Athom Homey is gegenereerd

Het certificaat heb ik op voor de zekerheid op mijn mobiele telefoon geïnstalleerd.

De foutmelding die ik krijg bij het gebruik van deze instellingen:

De poorten 1883 en 8883 zijn beide aan mijn statische IP-adres geforward. Overigens, waar wordt het wachtwoord uit de Owntracks app (Identification) eigenlijk voor gebruikt? Het wachtwoord heb ik nu voor mijn onbeveiligde verbinding (via poort: 1883) leeg en alles werkt gewoon :open_mouth:.

Hopelijk kunnen jullie zien wat ik fout heb geconfigureerd of ben vergeten te configureren. Voor de veiligheid zou ik namelijk graag een beveiligde TLS verbinding willen gebruiken.

Moet je niet poort 8883 configureren in de app? Er staat nu 1883:

(alhoewel de foutmelding op iets anders lijkt te wijzen)

Kan de Owntracks app voor Homey wel verbinding maken via de beveiligde verbinding? Ik weet niet of je dat ergens kunt zien.

Bedankt voor je snelle reactie! Je hebt inderdaad gelijk. Dit had ik ook ingesteld, maar alleen het verkeerde screenshot geupload (inmiddels aangepast).

In de Locatie & Aanwezigheid app voor Homey heb ik in de logs kunnen zien dat deze niet wilt verbinden met de MQTT-Broker voor Homey:

Ik heb even geprobeerd om deze instelling aan te vinken:
Certificaat controleren uitzetten

En nu kan de Locatie & Aanwezigheid app voor Homey wel verbinding maken met de MQTT-Broker voor Homey. Maar ik weet niet of het verstandig is om deze instelling aan te zetten.

De foutmelding op de Owntracks app blijft overigens hetzelfde, het werkt dus nog steeds niet helaas.

Die instelling aanzetten is de enige manier om het werkend te krijgen, tenzij de Location and Presence app ook een CA certificaat accepteert als configuratie-optie. Op zich maakt het voor de veiligheid niet zoveel uit.

Even voor de duidelijkheid: is <myStaticIp> een extern IP-adres?

Ik begrijp het. De MQTT-Broker voor Homey en de Locatie & Aanwezig voor Homey hebben nu dus wel contact met elkaar. Dus die instelling in de Locatie & Aanwezigheid app om het certificaat te negeren laat ik dan aan staan. Nu moet alleen de Owntracks app nog communiceren met de Locatie & Aanwezig app.

<myStaticIp> = mijn ip adres van Ziggo (beide poorten zijn geforward in mijn Orbi router)

Ik heb het vermoeden dat het IP-adres niet in het certificaat staat. Je kunt de certificaten (de CA en Certificate die de MQTT Broker app maakt) checken op de command line (op Unix-achtigen, op Windows weet ik niet hoe dat moet):

openssl x509 -in ca.pem -noout -text

Het certificaat heb ik wel gegenereerd op basis van het IP-adres, maar ik zal wel eventjes uitzoeken hoe dat werkt om het te verifiëren.

Is het trouwens niet zo dat als op de Locatie & Aanwezig app het controleren van een certificaat uiggevinkt staat. Het niet zou moeten uitmaken wat de Owntracks app meestuurt voor certificaat?

Als dat zo is dan heb ik nog geen enkele vorm van beveiliging, want dan kan alsnog iedereen met mijn IP-adres en poort verbinden.

Er zijn twee soorten certificaten:

  • een server certificaat
  • een client certificaat

Jij hebt alleen een server certificaat aangemaakt, in de MQTT Broker. Zo kunnen clients een veilige verbinding opzetten. Dat vinkje dat je hebt uitgezet heeft ermee te maken dat het een self-signed certificaat is, die normaal gesproken niet geaccepteerd worden (want er bestaat voor zo’n certificaat geen authoriteit die “zegt” dat het certificaat geldig is).

Nu dat je het noemt zit ik me af te vragen of je die ca.pem wel moet configureren voor de Owntracks app, want ik vermoed dat dat voor het client-certificaat-gedeelte is. Je hebt, voor zover ik begreep, ca.pem al systeemwijd als “veilig” bestempeld, dus Owntracks zou als het goed is niet moeten klagen over dat de broker een self-signed certificaat gebruikt.

Probeer eens alleen TLS aan te zetten in de Owntracks app en verder niks (dus geen CA certificate configureren).

Duidelijk, thanks voor de opheldering van dat vinkje!

Ik heb even geprobeerd wat je voorstelde:

  • TLS vink in Owntracks aangezet maar het certificaat niet geconfigureerd
  • Het CA certificaat geïnstalleerd op mijn Android device (het juiste IP-adres zit in het certificaat)

De Owntracks app is nu heel veel aan het reconnecten en komt dan met de foutmelding:

Pff irritant. Heeft de Owntracks app misschien een log waarin je meer info te zien krijgt? Of misschien dat de log van de MQTT Broker meer info geeft (bv dat de Owntracks client wel connect maar dat er iets misgaat met authenticatie of zo)?

Ja inderdaad! Ik heb even gekeken in de log van de Locatie & Aanwezigheid en die van de MQTT-Broker, maar helaas gebeurd er helemaal niets meer nadat deze twee elkaar hebben gevonden en zijn verbonden.

Het maakt in de Owntracks-app ook niet uit of ik nu het vinkje voor TLS aan heb staan zonder of met certificaat ingeladen. Deze acties zorgen voor niet meer logging.

Is er nog een andere manier om Locatie & Aanwezigheid met Owntracks veilig op te zetten en te gebruiken (zonder het afnemen van een online MQTT-broker abonnement)? Aangezien ik de local MQTT-Broker van Homey niet werkend krijg.

Toen ik Owntracks nog gebruikte had ik een aparte MQTT broker (Mosquitto) draaien die ook via websockets kon werken. De TLS-termination liet ik aan m’n HTTP server (nginx) over, dus op m’n thuisnetwerk was alles unencrypted. Voor m’n HTTP server had ik een Let’s Encrypt certificaat, dus niet self-signed, wat al een hele hoop problemen oplost.

Dat is ook een mogelijkheid inderdaad.
Het liefst heb ik niets buiten de Homey om op een server draaien. Daarom dacht ik die MQTT-Broker met TLS is perfect!, maar helaas.

Denk je dat de methode via HTTP en de tokens een goede alsnog veilige alternatief is? Owntracks wil ik graag gebruiken omdat de standaard Homey presence het regelmatig niet doet.

Waar het, in ieder geval mij, om gaat is dat de verbinding tussen mijn telefoon en mijn thuisnetwerk beveiligd is als ik van huis ben. Dan is een HTTP server als TLS terminator voor mij goed genoeg. Binnen m’n thuisnetwerk ben ik niet zo bang dat er afgeluisterd wordt. Met self-signed certificaten werken is sowieso altijd gedoe, en voor m’n interne netwerk Let’s Encrypt gaan gebruiken is ook teveel moeite :wink:

Haha dat het een gedoe is ben ik wel achter gekomen inderdaad :sweat_smile:

Dan ga ik nu deze Location and Presence for Homey (formally Owntracks client) volgen over HTTP met Athom Cloud. Hopelijk is dit nog een beetje kloppend, anders heb ik geen alternatieven meer om Owntracks werkend te krijgen :sweat_smile: