Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. MQTT mit SSL und selbst-signiertem Zertifikat

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    MQTT mit SSL und selbst-signiertem Zertifikat

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      Wolfgang Denk last edited by

      Ich versuche MQTT mit SSL und selbst-signiertem Zertifikat zum Laufen zu bringen.

      Ich trage im MQTT Broker/Client unter "Publikzertifikat" mein Server Certificate ein, und unter "Privatzertifikat" meinen Server Key. Ist das soweit richtig?

      Dann gibt es da noch das "Kettenzertifikat" - ich finde keine Doku, was das genau ist, und ich kann da auch nur "keins" als einzige Möglichkeit wählen.

      Wenn ich jetzt im MQTT Client ebenfalls SSL aktiviere, sehe ich im Log:

      mqtt-client.0 2019-04-23 21:35:34.531 warn client error: Error: self signed certificate

      Wie kann ich dafür sorgen, dass das selbst-signierte Zertifikat ohne Fehlermeldung akzeptiert wird?

      Ich will definitiv nicht die Prüfung abschalten, wie es leider oft empfohlen wird - ich möchte dafür sorgen, dass mein Zertifikat akzeptiert wird.

      Wie geht das?

      Vielen Dank im voraus!

      1 Reply Last reply Reply Quote 0
      • B
        Balu1973 last edited by Balu1973

        Hi,

        ich habe das nach dieser Anleitung gemacht:

        https://www.auxnet.de/verschluesseltes-mqtt-vom-und-zum-mosquitto-server/

        Ging damit recht einfach. Ein Zwischenzertifikat (oder Kettenzertifikat) brauchst Du nicht unbedingt.

        Grüße,
        Balu

        1 Reply Last reply Reply Quote 0
        • foxriver76
          foxriver76 Developer last edited by

          Muss das eher unbeantwortete Thema nochmal auffrischen. Probiere aktuell auch eine SSL Verbindung zu meiner MQTT Adapterinstanz aufzubauen. Habe das eingestellte Public Zertifikat auf meinem Client und gebe dieses mit. Die Verbindung schlägt fehl, der Adapter loggt hierbei auf keinem Loglevel etwas passendes.

          Mein Client sagt mir nur Error: A TLS error occurred..

          Getestet habe ich das ganze unter Ubuntu mittels mosquitto_pub. Aufruf schaut so aus:

          mosquitto_pub -u "myUsername" -P "myPassword" -p 1883 -h 192.168.180.64 -t 'test_topic' -m 'test message' --cafile /home/moritz/Schreibtisch/cert.crt

          Ohne SSL funktioniert es problemlos.

          Hat jemand eine Verbindung zum MQTT Adapter (als Server) mittels SSL laufen und weiß evtl was ich falsch mache? 😉

          beste Grüße

          fox

          1 Reply Last reply Reply Quote 0
          • systemofapwne
            systemofapwne last edited by

            Ich war ebenfalls auf der Suche nach einer Lösung. Ich konnte die Ursache des Problems etwas eingrenzen. Zunächst scheint die Kommunikation mittels TLS zum Adapter bei mir zu funktionieren.

            Das hier ist in etwa die Kette an nodejs modulen, die involviert sind

            iobroker.mqtt -(erzeugt objekt)-> tls -(wird übergeben an)-> mqtt-connection -(nutzt für decodierung...)-> mqtt-packet

            Das modul mqtt-connection selber ist derived vom Paket duplexify und nutzt intern das node module mqtt-packet für die eigentliche mqtt Verarbeitung.
            Ab dem Modul "mqtt-connection" passiert allerdings nichts weiter mit der (erfolgreich aufgebauten) tls verbindung. Es werden keine Daten weiter gereicht. Für mich sieht es so aus, als wenn duplexify mit dem tls objekt nicht weiter Arbeiten kann.
            Nach knapp einen ganzen Tag des erfolglosen Debuggens habe ich die native Unterstützung von TLS über iobroker.mqtt aufgegeben.
            Stattdessen nutzt ich nun nginx als TLS proxy (basierend auf diesem Tutorial)

            Hier ist meine nginx config

            stream {
            	log_format mqtt '$remote_addr [$time_local] $protocol $status $bytes_received ' '$bytes_sent $upstream_addr';
            
            	server {
            		listen 8883 ssl; # MQTT secure port
            
            		ssl_certificate     /path/to/certificates/self.crt;
            		ssl_certificate_key /path/to/certificates/self.key;
            		ssl_ciphers         HIGH:!aNULL:!MD5;
            		#ssl_session_cache   shared:SSL:128m; # 128MB ~= 500k sessions
            		ssl_session_tickets on;
            		ssl_session_timeout 8h;
            
            		proxy_pass <ip zu iobroker, wo MQTT drauf läuft>:1883;
            		proxy_connect_timeout 1s;
            
            		access_log /var/log/nginx/mqtt_access.log mqtt;
            		error_log  /var/log/nginx/mqtt_error.log info; # nginScript debug logging
            	}
            }
            

            Jetzt verbindet sich mein Tasmota Endgerät über MQTT+TLS verschlüsselt zu meinem iobroker.

            1 Reply Last reply Reply Quote 2
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate
            FAQ Cloud / IOT
            HowTo: Node.js-Update
            HowTo: Backup/Restore
            Downloads
            BLOG

            773
            Online

            31.6k
            Users

            79.5k
            Topics

            1.3m
            Posts

            mqtt ssl self-signed cert
            4
            4
            3483
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo