MQTT TLS

Begonnen von Waldmensch, 21 Oktober 2018, 23:11:03

Vorheriges Thema - Nächstes Thema

Waldmensch

Im Developer Bereich gab es Versuche von @betateilchen TLS zu implementieren (Stand Juni). Gibt es da schon einen neueren Stand?

HomeAlone

Wenn ich es richtig verstanden habe, wird TLS bereits von einigen MQTT-Modulen unterstützt. So mein Verständnis:

MQTT-Module ohne TLS-Unterstützung (Stand 22.10.2018):

  • MQTT

    • Einbinden eines bestehenden MQTT-Brokers (z.B. Mosquitto) in fhem
    • Benutzername / Passwort werden unterstützt
  • MQTT_BRIDGE
    • Bridge, um fhem Devices MQTT sprechen zu lassen.
    • Muss parallel zu jedem fhem-Device angelegt werden, welches über MQTT kommunizieren soll.
  • MQTT_DEVICE

    • Unterstützung für MQTT-Geräte in fhem (z.B. Sonoff, etc.)
    • Benötigt MQTT-Modul (und daher keine TLS Unterstützung?)
  • MQTT_GENERIC_BRIDGE

    • Modul, welches automatisch für alle Geräte, die in der Grundkonfig dafür definiert wurden, MQTT-Kommunikation ermöglicht.
    • Benötigt MQTT-Modul (und daher keine TLS Unterstützung?)
    • Möchte MQTT_DEVICE und MQTT_BRIDGE in einem Modul bündeln

MQTT-Module mit TLS-Unterstützung (Stand 22.10.2018):


  • MQTT2-Server

    • Eigenständige MQTT-Broker Implementierung in fhem
    • TLS wird unterstützt
  • MQTT2_DEVICE
    • Device, welches über den MQTT2_SERVER kommuniziert.
    • Unterstützung für beliebige MQTT-Geräte in fhem (z.B. Sonoff, secureClients, etc.)
    • Da über MQTT2_DEVICE eingebunden, kann über TLS-verschlüsselte Verbindungen kommuniziert werden

D.h. wenn das MQTT-Modul TLS unterstützen würde, oder die MQTT_GENERIC_BRIDGE den MQTT2_SERVER wäre alles abgedeckt, oder? 

rudolfkoenig

Die TLS-Unterstuetzung in MQTT2_SERVER habe ich noch nicht getestet (bzw. die Suche nach einer praktikablen Client nach einer Stunde aufgegeben), und ich habe bisher auch keine Bestaetigung dafuer bekommen.
MQTT2_SERVER verwendet aber den gleichen Code wie der telnet und der HTTP Server in FHEM, und diese sind geprueft.

Mit TLS kann man mehrere Ziele verfolgen: die in FHEM implementierte Loesung bietet Verschluesselung, aber nicht die Moeglichkeit der Authentifizierung.

Von einer Mischung von MQTT_* und MQTT2_* Modulen rate ich ab: es ist fuerchterlich ineffizient.
TLS in diesem Zusammenhang zu verwenden ist zusaetzlich sinnfrei.

hexenmeister

ZitatD.h. wenn das MQTT-Modul TLS unterstützen würde, oder die MQTT_GENERIC_BRIDGE den MQTT2_SERVER wäre alles abgedeckt, oder?
Der wichtigste Anwendungsfall (aus meiner Sicht) ist damit nicht abgedeckt - die Anbindung eines externen mqtt Servers (z. B. im Cloud). Ausserdem sehe ich überhaupt kein Gewinn, mqtt Server in einer single threading Anwendung zusätzlich zu der sonstigen Logik laufen zu lassen. Aus meiner Sicht ist die umgekehrte Vorgehensweise besser - alles, was da nicht unbedingt sein muss, soll raus. Fhem bedankt sich dafür mit raschen Antwortzeiten  ;)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy