Was ist MQTT?
MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Nachrichtenprotokoll basierend auf dem Publish-Subscribe-Modell, entwickelt für Netzwerke mit begrenzter Bandbreite und unterbrochenen Verbindungen — typische Bedingungen für ein 4G-Gateway im Feld. Ein Gerät veröffentlicht Nachrichten in einem Topic (z. B. device/001/energy); andere Geräte, die dieses Topic abonniert haben, empfangen sie automatisch. Der Broker fungiert als Vermittler: Er empfängt, filtert und verteilt Nachrichten, ohne dass Publisher und Subscriber direkt verbunden sein müssen. MQTT läuft über TCP/IP (Port 1883 unverschlüsselt, 8883 mit TLS) und ist ISO/IEC 20922-Standard.
Mosquitto ist der Open-Source-Referenz-MQTT-Broker der Eclipse Foundation. Er unterstützt MQTT 3.1, 3.1.1 und 5.0, wiegt weniger als 1 MB und ist in unter 5 Minuten installiert. Dieser Leitfaden behandelt die Installation unter Windows und Linux, die TLS-Zertifikatsgenerierung mit OpenSSL und die Konfiguration der Benutzer/Passwort-Authentifizierung.
Wann Mosquitto verwenden
- Self-hosted-Installationen mit voller Serverkontrolle (VPS, lokaler Server, Raspberry Pi).
- Entwicklungs- und Testumgebungen vor der Migration zu einem Cloud-Broker.
- Bereitstellungen mit strengen Datenschutzanforderungen.
- Budgetprojekte — Mosquitto ist komplett kostenlos ohne Verbindungslimits.
TLS-Zertifikatsarchitektur
Für MQTT über TLS (Port 8883) benötigen Sie drei Dateien: ein selbstsigniertes CA-Zertifikat, ein von dieser CA signiertes Serverzertifikat und — optional — Client-Zertifikate für gegenseitige Authentifizierung (mTLS).
Anforderungen
- Server mit öffentlicher IP oder Domainname, der vom Index AMI erreichbar ist.
- TCP-Port 8883 in der Server-Firewall geöffnet.
- OpenSSL installiert (bei Mosquitto unter Windows enthalten; unter Linux als Paket verfügbar).
Schritt 1 — Mosquitto installieren
Linux (Ubuntu / Debian)
Auf Ubuntu 22.04 / Debian 12:
sudo apt update && sudo apt install -y mosquitto mosquitto-clients sudo systemctl enable --now mosquitto
Überprüfen Sie, ob der Dienst aktiv ist:
systemctl status mosquitto # ● mosquitto.service - Mosquitto MQTT Broker # Active: active (running)
Windows 10 / 11
Laden Sie den offiziellen Installer von mosquitto.org/download herunter (Win64 .exe). Als Administrator ausführen.
winget install EclipseFoundation.Mosquitto
Überprüfen Sie, ob der Dienst installiert ist:
sc query mosquitto # STATE : 4 RUNNING
Der Installer registriert Mosquitto als Windows-Dienst (Name: mosquitto). Verwalten Sie ihn über services.msc oder PowerShell.
Schritt 2 — TLS-Zertifikate mit OpenSSL generieren
Zertifikate sind unter Linux und Windows identisch — der OpenSSL-Prozess ist gleich.
Generieren Sie Zertifikate einmal und verwenden Sie sie für alle Gateways desselben Brokers.
Linux (Ubuntu / Debian)
Vom Terminal (Linux):
mkdir ~/mosquitto-certs && cd ~/mosquitto-certs openssl genrsa -out ca.key 4096 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MeinCA-MQTT/O=MeineOrg/C=DE" openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr -subj "/CN=broker.meinedomain.com/O=MeineOrg/C=DE" openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Windows 10 / 11
Aus PowerShell als Administrator:
cd "C:\Program Files\mosquitto" mkdir certs && cd certs .\openssl.exe genrsa -out ca.key 4096 .\openssl.exe req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MeinCA-MQTT/O=MeineOrg/C=DE" .\openssl.exe genrsa -out server.key 2048 .\openssl.exe req -new -key server.key -out server.csr -subj "/CN=broker.meinedomain.com/O=MeineOrg/C=DE" .\openssl.exe x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Der CN des Serverzertifikats muss dem Hostname oder der IP entsprechen, den Clients für die Verbindung verwenden.
Schritt 3 — mosquitto.conf konfigurieren
Linux (Ubuntu / Debian)
Bearbeiten oder erstellen Sie die Hauptkonfigurationsdatei: /etc/mosquitto/conf.d/tls.conf
listener 8883 cafile /etc/mosquitto/certs/ca.crt certfile /etc/mosquitto/certs/server.crt keyfile /etc/mosquitto/certs/server.key require_certificate false
Windows 10 / 11
Unter Windows befindet sich die Konfigurationsdatei unter: C:\Program Files\mosquitto\mosquitto.conf
Öffnen Sie Port 8883 in der Firewall:
sudo ufw allow 8883/tcp && sudo ufw reload
New-NetFirewallRule -DisplayName "Mosquitto MQTT TLS" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow
Schritt 4 — Broker mit mosquitto_sub und mosquitto_pub verifizieren
Von einem anderen Terminal aus, abonnieren Sie ein Test-Topic:
Linux (Ubuntu / Debian)
mosquitto_sub -h broker.meinedomain.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/nachricht" -v
mosquitto_pub -h broker.meinedomain.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/nachricht" -m "Hallo TLS-Broker"
Windows 10 / 11
Unter Windows befinden sich mosquitto_sub.exe und mosquitto_pub.exe in C:\Program Files\mosquitto\:
.\mosquitto_sub.exe -h broker.meinedomain.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/nachricht" -v
.\mosquitto_pub.exe -h broker.meinedomain.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/nachricht" -m "Hallo TLS-Broker"
Terminal 1 sollte zeigen: test/nachricht Hallo TLS-Broker — dies bestätigt, dass der TLS-Broker betriebsbereit ist.
Schritt 5 — Benutzer/Passwort-Authentifizierung (empfohlen)
Erstellen Sie eine Passwortdatei, um anonyme Verbindungen zu verhindern.
Linux (Ubuntu / Debian)
sudo mosquitto_passwd -c /etc/mosquitto/passwd gateway_user sudo systemctl restart mosquitto
Windows 10 / 11
cd "C:\Program Files\mosquitto" .\mosquitto_passwd.exe -c "C:\Program Files\mosquitto\passwd" gateway_user Restart-Service -Name "mosquitto"
Fügen Sie diese Zeilen zu mosquitto.conf hinzu, um Authentifizierung zu aktivieren:
allow_anonymous false password_file /etc/mosquitto/passwd
Index AMI mit dem Broker verbinden
Wenn der Broker mit TLS aktiv ist, konfigurieren Sie die folgenden Parameter am Index AMI (MQTT-Konfigurationsanleitung):
- MQTT-Host: öffentliche IP oder FQDN des Servers, auf dem Mosquitto läuft.
- Port: 8883 (MQTT über TLS).
- Transport: MQTT über SSL.
- CA-Zertifikat: die in Schritt 2 generierte ca.crt-Datei.
- Client-Zertifikat und privater Schlüssel: client.crt und client.key bei mTLS.
- Benutzername und Passwort: die in Schritt 5 erstellten Zugangsdaten.
- Client-ID: eindeutige Kennung pro Index AMI.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Client verbindet sich nicht: Connection refused | Port 8883 geschlossen oder Mosquitto nicht gestartet | Prüfen Sie, ob der Dienst aktiv und der Port in der Firewall offen ist |
| SSL handshake failed | CN des Zertifikats stimmt nicht mit dem Hostname überein | Regenerieren Sie server.crt mit dem korrekten CN |
| Verbindung getrennt | Index AMI hat die Verbindung verloren | Prüfen Sie Keepalive am Index AMI (≥ 60 s) |
| Keine Nachricht empfangen | Topic falsch geschrieben | Prüfen Sie, dass Publisher und Subscriber exakt dasselbe Topic verwenden |
| Authentication failed | Falsche Zugangsdaten | Prüfen Sie Benutzername/Passwort und allow_anonymous false in mosquitto.conf |
Nächste Schritte
Mit aktivem Broker konfigurieren Sie das Index AMI über den MQTT-Leitfaden. Zum Interpretieren der LTE-Signalmetriken im Index AMI-Überblick lesen Sie den LTE-Signal-Artikel.