Inhaltsverzeichnis
Schritt 1 Pakete Installieren und konfigurieren
sudo apt update; sudo apt install mosquitto mosquitto-clients
Zum testen zwei ssh Fenster zum Server öffnen. Im ersten Fenster mit mosquitto_sub einen Listener öffnen und auf den Topic test lauschen
mosquitto_sub -h localhost -t test
Im zweiten Fenster mittels mosquitto_pub eine Nachricht versenden.
mosquitto_pub -h localhost -t test -m "hello world"
Schritt 2 — Verwendung von Passwörtern in MQTT
Konfiguration von Mosquitto um Passwörter zu verwenden. Erst eine passwd Datei für Mosquitto erstellen dann einen weiteren Benutzer anlegen. Die passwd Datei wird in /etc/mosquitto/passwd erstellt.Das Beispiel erstellt die Datei und legt den Benutzer mqtt an das Password wird abgefragt. Für den Benutzer sensor1 wird das Password geheim12 verwendet.
sudo mosquitto_passwd -c /etc/mosquitto/passwd mqtt sudo mosquitto_passwd -b /etc/mosquitto/passwd sensor1 geheim12
Anpassung der Konfiguration zur Verwendung von Passwörtern
sudo vi /etc/mosquitto/conf.d/default.conf
In der leeren Datei die folgenden Zeilen einfügen. Unbedingt eine Leerzeile am ende Datei einfügen.
allow_anonymous false password_file /etc/mosquitto/passwd
allow_anonymous false erzwingt die Verwendung von Passwörtern. Die password_file Zeile konfiguriert die erstellte passwd Datei.
Den Dienst neu starten um die änderungen anzuwenden.
sudo systemctl restart mosquitto
Ein Verbingsaufbau ohne Password sollte nicht mehr funktionieren.
mosquitto_pub -h localhost -t "test" -m "hello world"
Ausgabe sollte so aussehen.
Connection Refused: not authorised. Error: The connection was refused.
Verwenden der Konsolen
mosquitto_sub -h localhost -t test -u sensor1 -P password mosquitto_pub -h localhost -t test -m "hello world" -u sensor1 -P password
sudo mosquitto_passwd /etc/mosquitto/conf.d/passwd admin
Das wiederholt man mit allen Benutzern, die man gerne hätte.
Zugriffsrechte vergeben
Die Zugriffsrechte werde dann in der acl-Datei festgelegt:
# admin darf alles user admin topic readwrite # topic readwrite $SYS/# # openhab2 darf alles lesen, aber nur bestimmte Topics schreiben # um Steuer-Befehle abzusenden user openhab2 topic read # topic write garage/target topic write sonoff_rf_1/cmnd/POWER # Die Sonoffs bekommen alle den gleichen Benutzer, also # volle Berechtigung auf die Sonoff-Topics user sonoff_pow topic readwrite sonoff_pow_1/# topic readwrite sonoff_pow_2/# topic readwrite sonoff_rf_1/# # Homegear hat auch sein eigenes Topic mit kompletten Rechten user homegear topic readwrite homegear/# # Und das gleiche für die Garage user garage topic readwrite garage/#
Jeder bekommt nur die Rechte, die er wirklich benötigt. Jetzt noch den Broker neu starten, damit die Config übernommen wird:
sudo systemctl restart mosquitto.service
