Mosquitto 2.0 MQTT Broker mit einem CA Zertifikat

Q: Ich möchte mein eigenes TLS-Zertifikat verwenden, wenn ich meine INSTAR 2k+ (WQHD) Kamera mit meinem Mosquitto 2 Broker verbinde. Da ich aber nur eine lokale Domain verwende, kann ich keinen Dienst wie Let's Encrypt verwenden, um es zu generieren. Ist es möglich, mein eigenes CA-Zertifikat zu erstellen?

A: Ja, aber das müssen Sie nicht! Ihre Kamera verwendet ein autorisiertes Zertifikat für ihre INSTAR-DDNS-Adresse. Wenn Sie die Option Zertifikat überprüfen im MQTT-Menü Ihrer Kamera deaktivieren, können Sie dieses Zertifikat zur Verschlüsselung der Kommunikation zwischen Ihrer Kamera und dem Mosquitto-Broker verwenden. Um die Zertifikatsüberprüfung aktiv zu lassen, benötigen Sie einen lokalen DNS-Server (oder eine bearbeitete "hosts"-Datei auf jedem Computer), der die DDNS-Adresse Ihrer Kamera in ihre lokale IP-Adresse auflöst. Sie können das CA-Root-Zertifikat Ihrer Kamera als cafile zu Ihrer Broker-Konfiguration hinzufügen. Einzelheiten zum Herunterladen dieses Zertifikats finden Sie im CA Custom Store Artikel.

Wenn Sie wirklich, wirklich, WIRKLICH Ihr eigenes Zertifikat verwenden möchten, können Sie Nehmen Sie die Sache selbst in die Hand und erzeugen Sie sie selbst. Wenn Sie alle diese Schritte durchlaufen haben, kehren Sie hierher zurück, um die generierte Datei in Ihrer Mosquitto-Konfiguration zu verwenden.

Mosquitto Server Konfiguration

Jetzt müssen wir die Dateien ca.crt, server.crt und server.key zu unserer Konfigurationsdatei hinzufügen /etc/mosquitto/conf.d/custom.conf:

# -----------------------------------------------------------------
# Certificate based SSL/TLS support
# -----------------------------------------------------------------
listener 8883
tls_version tlsv1.2
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key

Hinweis: INSTAR Full HD-Kameras benötigen tlsv1.2, während INSTAR 2k+ (WQHD)-Kameras die neuere Version tlsv1.3 verwenden. Sie können die Konfiguration tlsv1.2 durch tlsv1.3 ersetzen, wenn Sie nur mit 2k+ (WQHD)-Kameras arbeiten.

Starten Sie dann den Dienst neu:

service mosquitto restart && service mosquitto status

Testen der Verbindung

Alles, was Sie brauchen, um eine Serververbindung herzustellen, ist die Datei ca.crt auf Ihrem Client-Rechner. Dann können Sie versuchen, das Last-Will-Thema Ihrer Kamera zu abonnieren, und sollten den Online-Status der Kamera erhalten:

mosquitto_sub -h debian11 -t 'cameras/117/status/connection' -p 8883 --insecure --cafile ca.crt --tls-version tlsv1.2 -u admin -P instar -v

cameras/117/status/connection {"val":"online"}
cameras/117/status/connection {"val":"offline"}
cameras/117/status/connection {"val":"online"}

Beachten Sie die "unsicher"-Flag im obigen Abonnement. Wenn bei der Erstellung der Zertifikate alles richtig gelaufen ist, sollten Sie es entfernen können und trotzdem erfolgreich eine Verbindung herstellen können.

Oder mit dem MQTT Explorer - auch hier beginnen wir mit deaktivierter Certificate Verification. Geben Sie die Verbindungsdetails ein und klicken Sie auf Advanced, um das "cafile" hinzuzufügen:

Mosquitto 2.0 MQTT Broker with a CA Certificate

Mosquitto 2.0 MQTT Broker with a CA Certificate

Klicken Sie auf Verbinden - wenn es funktioniert, versuchen Sie die Option Zertifikat validieren zu aktivieren.