IoT-Automatisierung

Tasmota MQTT TLS: Ein ESP32-Tasmota-Gerät auf Port 8883 mit dem Broker verbinden

Erfahren Sie, welche Tasmota-Builds TLS enthalten, wie SetOption103 und SetOption132 funktionieren und wie Sie ein ESP32-Tasmota-Gerät über Port 8883 mit einem verschlüsselten MQTT-Broker verbinden.

ESP32-Smart-Relais mit einem Vorhängeschloss-Symbol als Darstellung von Tasmota MQTT TLS auf Port 8883
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

Tasmota MQTT TLS verschlüsselt alles, was Ihr Gerät sendet und empfängt, einschließlich des Broker-Passworts, sodass Sie Steckdosen und Relais sicher mit einem Broker im Internet verbinden können. Diese Anleitung erklärt, welche Tasmota-Builds TLS tatsächlich enthalten, wie die beiden TLS-bezogenen Optionen funktionieren und wie Sie einen ESP32 mit Tasmota über Port 8883 mit korrekter Zertifikatsprüfung an einen Broker anbinden.

Warum unverschlüsseltes MQTT nicht reicht

Auf Port 1883 wird MQTT als Klartext übertragen. Das CONNECT-Paket enthält Benutzername und Passwort unverschlüsselt, und jede cmnd/.../POWER-Nachricht kann von jedem auf dem Übertragungsweg gelesen oder wiederholt werden. In einem gut verwalteten Heimnetz ist dieses Risiko gering. Sobald der Broker in der Cloud steht, führt der Weg über Ihren Provider und das öffentliche Internet, und Klartext ist nicht mehr akzeptabel. Das gilt erst recht, wenn Tasmota-Relais in Werkstatt, Lager oder Büro eines Unternehmens schalten: Verschlüsselte Kommunikation gehört dort zu den Grundanforderungen, die etwa IEC 62443 und der EU Cyber Resilience Act an vernetzte Geräte stellen.

TLS löst drei Probleme auf einmal: Es verschlüsselt die Sitzung, beweist dem Gerät, dass es mit dem echten Broker spricht, und schützt die Zugangsdaten. Der Leitfaden zu MQTT-Security-Best-Practices behandelt das Gesamtbild; dieser Beitrag konzentriert sich darauf, Tasmota selbst dazu zu bringen.

Welche Tasmota-Builds unterstützen MQTT TLS?

Hier bleiben die meisten hängen. TLS braucht Speicher und Programmplatz und ist daher nicht in jedes Binary einkompiliert.

Plattform Build MQTT TLS
ESP32 tasmota32 und seine Varianten Enthalten
ESP32 tasmota32-zbbridge Enthalten
ESP8266 tasmota, tasmota-lite, tasmota-sensors und andere Standard-Builds Nicht enthalten
ESP8266 Selbst kompiliert mit USE_MQTT_TLS Möglich, aber knapp beim Speicher

Ist Ihr Gerät ein ESP8266-Stecker, haben Sie zwei Möglichkeiten: einen eigenen Build mit #define USE_MQTT_TLS in user_config_override.h kompilieren oder unverschlüsseltes MQTT auf einem vertrauenswürdigen lokalen Broker akzeptieren und die Cloud-Seite anderswo abbilden. Auf dem ESP8266 belegt der TLS-Handshake einen großen Teil des verfügbaren RAM, sodass Funktionen wie eine umfangreiche Rules-Engine oder viele Sensoren womöglich nicht mehr daneben passen. Wählen Sie für neue Projekte ESP32-Hardware.

Um zu prüfen, was bei Ihnen läuft, öffnen Sie die Weboberfläche und schauen in die Fußzeile oder auf die Seite Information, die Version und Build-Namen anzeigt, zum Beispiel 14.2.0(release-tasmota32).

Die Version ist für Let's Encrypt entscheidend

Tasmota prüft das Zertifikat des Brokers gegen eine kleine Liste eingebauter Root-Zertifikate statt gegen ein vollständiges CA-Bundle. Das Let's-Encrypt-Root-Zertifikat ISRG Root X1 wurde in Tasmota 13.4.1.2 ergänzt. Broker wie broker.connectmq.com verwenden Let's-Encrypt-Zertifikate; stellen Sie also sicher, dass das Gerät ein aktuelles Release ausführt, und aktualisieren Sie zuerst, falls es älter ist.

Die beiden TLS-Optionen erklärt

Tasmota steuert TLS über zwei SetOption-Befehle:

  • SetOption103 - 1 aktiviert TLS für die MQTT-Verbindung, 0 deaktiviert es. Die Option wirkt nur bei Builds, die mit TLS kompiliert wurden.
  • SetOption132 - legt fest, wie das Serverzertifikat geprüft wird. 0 (der Standard) prüft es gegen die eingebauten Zertifizierungsstellen. 1 wechselt zur Fingerprint-Prüfung.

Lassen Sie SetOption132 bei jedem Broker mit öffentlich vertrauenswürdigem Zertifikat auf 0. Die Fingerprint-Prüfung pinnt ein bestimmtes Zertifikat, und Let's-Encrypt-Zertifikate werden alle paar Monate erneuert; ein gepinnter Fingerprint bricht daher bei der nächsten Erneuerung, sofern Sie ihn nicht ständig aktualisieren.

Schritt 1: Tasmota MQTT TLS auf dem öffentlichen MQTT-Broker testen

Der öffentliche MQTT-Broker unter broker.connectmq.com akzeptiert anonyme TLS-Verbindungen auf Port 8883 mit jeder eindeutigen Client ID. Wählen Sie ein zufälliges Präfix wie q8v3mz und geben Sie Folgendes in die Tasmota-Konsole ein:

Backlog SetOption103 1; SetOption132 0; MqttHost broker.connectmq.com; MqttPort 8883; MqttClient tasmota-q8v3mz; MqttUser 0; MqttPassword 0; Topic relay1; FullTopic connectmq/demo/q8v3mz/%prefix%/%topic%/

Das Gerät startet neu. Beobachten Sie die Konsole: Eine erfolgreiche Verbindung protokolliert eine Meldung, dass TLS verbunden ist, gefolgt von MQT: Connected. Der erste Handshake kann auf einem ESP32 ein, zwei Sekunden dauern; das ist normal.

Prüfen Sie von einem Computer aus:

mosquitto_sub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -i watch-q8v3mz -t 'connectmq/demo/q8v3mz/#' -v

Sie sollten tele/relay1/LWT Online sowie die Nachrichten INFO und STATE sehen. Senden Sie einen Befehl über TLS:

mosquitto_pub -h broker.connectmq.com -p 8883 --capath /etc/ssl/certs \
  -i send-q8v3mz -t 'connectmq/demo/q8v3mz/cmnd/relay1/POWER' -m 'TOGGLE'

Denken Sie daran, dass der öffentliche MQTT-Broker auch über TLS für alle lesbar und nur für Tests und Prototypen gedacht ist. TLS schützt den Transport, nicht den Zugriff auf das Topic. Lassen Sie kein Gerät, das etwas Wichtiges steuert, auf öffentlichen Topics.

Schritt 2: Mit Zugangsdaten an Ihren privaten Broker anbinden

Für den Produktivbetrieb legen Sie einen privaten Broker an. In ConnectMQ wählen Sie einen Tarif, erstellen einen Broker und erhalten Benutzername, Passwort und Client ID. Die Client ID ist an diese Zugangsdaten gebunden; geben Sie sie also exakt ein:

Backlog SetOption103 1; MqttHost broker.connectmq.com; MqttPort 8883; MqttClient YOUR_CLIENT_ID; MqttUser YOUR_USERNAME; MqttPassword YOUR_PASSWORD; Topic relay1; FullTopic home/%prefix%/%topic%/

Verwenden Sie den im Portal für Ihren Broker angezeigten Host, falls er abweicht. Öffnen Sie nach dem Neustart den Live-Topic-Explorer des Portals; home/tele/relay1/LWT mit dem retained Wert Online bestätigt, dass das Gerät mit eigener Identität über TLS verbunden ist.

Die aktiven Einstellungen können Sie jederzeit mit Status 6 prüfen; der Befehl gibt MQTT-Host, Port, Client und Benutzer aus (das Passwort wird nie angezeigt).

Schritt 3: Das Gerät härten

TLS auf der MQTT-Verbindung ist nur eine Schicht. Einige zusätzliche Einstellungen schließen die offensichtlichen Lücken:

  1. Ein Admin-Passwort für die Weboberfläche setzen mit WebPassword <strong password>, sonst kann jeder in Ihrem WLAN die Oberfläche öffnen und die MQTT-Einstellungen lesen.
  2. Den Webserver ganz abschalten mit WebServer 0 bei Geräten, die Sie nur per MQTT steuern. Bei Bedarf können Sie ihn später per MQTT wieder aktivieren.
  3. Einen Satz Zugangsdaten pro Gerät verwenden. Geht ein Stecker verloren oder wird er kompromittiert, widerrufen Sie einen Satz, ohne die anderen anzufassen.
  4. Firmware aktuell halten. Root-Listen für TLS und Sicherheitskorrekturen kommen mit neuen Releases. Tasmota kann sich per MQTT mit Upgrade 1 aktualisieren.
  5. Die Prüfung nicht deaktivieren. Fingerprints aus lauter FF oder andere „alles akzeptieren“-Workarounds entfernen die Authentifizierungshälfte von TLS.

Fehlersuche bei Tasmota MQTT TLS

Symptom Wahrscheinliche Ursache Was zu tun ist
SetOption103 hat keine Wirkung Build ohne TLS Einen tasmota32-Build flashen oder selbst mit USE_MQTT_TLS kompilieren
TLS-Handshake schlägt fehl, Zertifikatsfehler Firmware älter als 13.4.1.2 ohne ISRG Root X1 Tasmota aktualisieren
TLS scheitert direkt nach dem Booten, klappt später Uhrzeit noch nicht gesetzt Sicherstellen, dass NTP funktioniert; Zertifikatsprüfungen brauchen die korrekte Zeit
Verbindung auf 1883 klappt, auf 8883 nicht Port im Gast-WLAN oder von einer Firewall blockiert Aus einem anderen Netz testen
Gerät startet während des Handshakes neu (ESP8266) Speicher erschöpft Treiber entfernen, ESP32 verwenden
rc 5 nicht autorisiert Zugangsdaten oder Client ID stimmen nicht Werte erneut aus dem Portal kopieren

Wenn Sie statt Tasmota eigene Firmware bauen, gelten dieselben TLS-Prinzipien im Arduino-Code; ein Beispiel mit WiFiClientSecure finden Sie im ESP32-MQTT-Tutorial. Den allgemeinen Konfigurationsablauf von Tasmota, einschließlich Topics und Full Topics, beschreibt die Anleitung zum Einrichten von Tasmota MQTT. Die offizielle Referenz zu allen Optionen finden Sie in der Tasmota-TLS-Dokumentation.

Ein Cloud-Broker, der standardmäßig TLS spricht

Ein selbst gehosteter Broker mit TLS bedeutet, Zertifikate zu beschaffen oder zu erneuern, Listener zu konfigurieren und den Server zu patchen. Ein verwalteter MQTT-Broker wie ConnectMQ bietet TLS auf 8883 und Secure WebSocket auf 8084 mit bereits eingerichtetem Let's-Encrypt-Zertifikat sowie IP-Sperren nach wiederholten fehlgeschlagenen Anmeldungen. So können sich einige ESP32-Relais zu Hause oder über mehrere Standorte hinweg einen sicheren Broker teilen. Ein größeres Bild davon, wo diese Geräte hingehören, bietet der IoT-Automatisierungsleitfaden.

Sichern Sie Ihre Tasmota-Geräte mit ConnectMQ ab

Erstellen Sie einen kostenlosen Serverless-Broker unter app.connectmq.com, ganz ohne Kreditkarte. Fügen Sie die generierten Zugangsdaten in den obigen Konsolenbefehl ein, aktivieren Sie SetOption103, und Ihre Tasmota-Geräte sind in wenigen Minuten über TLS verbunden.

Häufig gestellte Fragen

Unterstützt Tasmota MQTT über TLS?

Ja, auf ESP32-Builds tasmota32 direkt ab Werk. Standard-Builds für den ESP8266 enthalten kein TLS; Sie brauchen einen eigenen Build mit USE_MQTT_TLS.

Was bewirkt SetOption103 in Tasmota?

SetOption103 1 aktiviert TLS für die MQTT-Verbindung bei Builds mit TLS-Unterstützung. Kombinieren Sie es mit MqttPort 8883.

Sollte ich Fingerprint-Prüfung oder CA-Prüfung verwenden?

Verwenden Sie die CA-Prüfung (SetOption132 0) für Broker mit öffentlich vertrauenswürdigen Zertifikaten wie Let's Encrypt. Fingerprints brechen bei jeder Erneuerung des Zertifikats.

Warum scheitert meine Tasmota-TLS-Verbindung mit einer alten Firmware?

Ältere Releases enthalten das von Let's Encrypt verwendete Zertifikat ISRG Root X1 nicht, daher schlägt die Prüfung fehl. Ein Update auf Tasmota 13.4.1.2 oder neuer behebt das.

Verwandte Artikel

Zigbee2MQTT einrichten: Vom Koordinator bis zum Dashboard

Installieren Sie Zigbee2MQTT mit Docker, konfigurieren Sie Koordinator und MQTT-Verbindung, lernen Sie Geräte an und benennen Sie sie um, steuern Sie sie per MQTT und zeigen Sie ihre Zustände auf einem Dashboard an, zuerst getestet auf einem kostenlosen öffentlichen MQTT-Broker.

8 Min. Lesezeit

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.