← Terug naar blog

OwnTracks met TLS en Mosquitto MQTT

OwnTracks-logo

OwnTracks is een gratis open-source applicatie voor iOS en Android waarmee je je locatie via MQTT naar je home automation systeem kunt sturen. Locatiedata moet natuurlijk veilig verstuurd worden. In dit artikel staat hoe je OwnTracks met TLS en Mosquitto MQTT configureert.

Het generate-CA script voorbereiden

Belangrijk: het volgende OwnTracks-script draait op een publieke server waar Mosquitto al geinstalleerd is.

$ cd /etc/mosquitto/certs
$ wget https://github.com/owntracks/tools/blob/master/TLS/generate-CA.sh
$ chmod +x generate-CA.sh

Maak de geldigheid van certificaten langer op Android, bijvoorbeeld tot 2032. Op iOS kan dit niet en is de limiet 825 dagen. Wijzig:

server_days=825

naar:

server_days=$days

Server keys maken

Maak de server key set:

$ ./generate-CA.sh <volledige domeinnaam>
# voorbeeld
$ ./generate-CA.sh vps.example.com

Client keys maken

Maak daarna de client key set. Vervang arjan door je eigen naam:

$ ./generate-CA.sh client arjan

Mosquitto serverconfiguratie

Voeg de key files toe aan de Mosquitto-configuratie:

$ vi /etc/mosquitto/conf.d/default.conf
listener 12383
cafile /etc/mosquitto/certs/ca.crt
keyfile /etc/mosquitto/certs/vps.example.com.key
certfile /etc/mosquitto/certs/vps.example.com.crt

connection brug
address 192.168.5.248:1883
topic mobiel/# both
topic owntracks/# both

Test de Mosquitto server:

$ systemctl stop mosquitto.service
$ tail -f /var/log/mosquitto/mosquitto.log &
$ /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Mosquitto client testen

Kopieer de client keys en ca.crt naar je desktop of laptop. De remote domainnaam moet hetzelfde zijn als bij het servercertificaat:

$ mosquitto_sub -d -h vps.example.com -p 12383 -t owntracks/# --cafile ca.crt --cert arjan.crt --key arjan.key

TLS inschakelen in OwnTracks

Documentatie: https://owntracks.org/booklet/features/tlscert/#pkcs12

Maak een PKCS#12-bestand om naar je telefoon te sturen:

$ openssl pkcs12 -export -in arjan.crt -inkey arjan.key -name "Arjan's key" -out arjan.p12

Kopieer ca.crt en arjan.p12 naar de telefoon, bijvoorbeeld via e-mail. Sla ze op in een nieuwe map OwnTracks.

Android

In OwnTracks:

  • ga naar Preferences -> Connection -> Security
  • zet TLS aan
  • kies bij CA Certificate het bestand ca.crt
  • kies bij Client certificate het bestand arjan.p12
  • vul het wachtwoord van het P12-bestand in
  • klik op ACCEPT

Controleer daarna in Status of de verbinding succesvol is.

iOS

Voor iOS staan de stappen in de OwnTracks documentatie: iOS OwnTracks