node.js - node - paho mqtt client send




Verbinden Sie den mqtt Client über Web-Sockets mit HTTPS vom Browser (2)

Ich möchte einen mqtt-Client in einem Webbrowser mit Web-Sockets mit HTTPS ausführen. Mit HTTP habe ich kein Problem. Hier ist der Code im Webbrowser bei Verwendung von HTTP.

<script>
      var client  = mqtt.connect( 'wss://127.0.0.1:3000', {username:'test_user', password:'test_password'} );
      client.subscribe("mqtt/test");

      client.on("message", function(topic, payload) {
        alert([topic, payload].join(": "));
        client.end();
      });

      client.publish("mqtt/test", "testing hello world!");
</script> 

So starte ich den Standalone-Mosca-Broker, um HTTPS auf Websockets zu verwenden.

mosca --very-verbose --key ./tls-key.pem --cert ./tls-cert.pem --credentials ./credentials.json --https-port 3000 --https-bundle --https-static ./ | pino

Wie sollte ich meinen mqtt-Client-Code im Browser ändern, um eine Verbindung zum Mosca-Broker über Websocket über HTTPS herzustellen?


Sie haben Probleme aufgrund der Verwendung eines selbstsignierten Zertifikats. Stattdessen können Sie Folgendes verwenden:

  1. Service Cloudflare als Front (mit https und wss im freien Plan). Lesen Sie über Wolkenfackel
  2. Erhalten Sie temporäre Zertifikate von Letsencrypt (hat eine freie Pläne). Lesen Sie über Letsencrypt
  3. Erhalten Sie ein vertrauenswürdiges bezahltes Zertifikat

Wie in den anderen Fragen, die Sie gestellt haben, erläutert wurde, hat der Webbrowser eine eigene Liste von vertrauenswürdigen CA-Zertifikaten. Ihr selbstsigniertes Zertifikat befindet sich nicht in dieser Liste, daher wird die Verbindung fehlschlagen.

Sie können Ihre eigenen vertrauenswürdigen Zertifikate in Ihren Browser importieren, aber wie Sie dies tun, unterscheidet sich mit jedem Browser und Sie müssen es für jede Instanz des Browsers tun, also nur für einzelne Tests wirklich nützlich.

Wenn Sie Mitgliedern der Öffentlichkeit (oder Browsern, auf denen Sie Ihr Zertifikat nicht installieren können) erlauben, sich mit Ihrem Broker zu verbinden, müssen Sie ein Zertifikat von einer anerkannten Zertifizierungsstelle anfordern. Sie müssen entweder dafür bezahlen oder einen Service wie http://letsencrypt.org nutzen





mosca