Konnektivität

MQTT-Broker mit Mosquitto und TLS: Installation und Konfiguration unter Linux und Windows

1. Juni 2026·12 min Lesezeit

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

SymptomWahrscheinliche UrsacheLösung
Client verbindet sich nicht: Connection refusedPort 8883 geschlossen oder Mosquitto nicht gestartetPrüfen Sie, ob der Dienst aktiv und der Port in der Firewall offen ist
SSL handshake failedCN des Zertifikats stimmt nicht mit dem Hostname übereinRegenerieren Sie server.crt mit dem korrekten CN
Verbindung getrenntIndex AMI hat die Verbindung verlorenPrüfen Sie Keepalive am Index AMI (≥ 60 s)
Keine Nachricht empfangenTopic falsch geschriebenPrüfen Sie, dass Publisher und Subscriber exakt dasselbe Topic verwenden
Authentication failedFalsche ZugangsdatenPrü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.