node.js - 通过来自浏览器的 HTTPS 通过 Web 套接字连接 mqtt 客户端

标签 node.js https websocket mqtt mosca

我想在使用 HTTPS 网络套接字的网络浏览器上运行 mqtt 客户端。使用 HTTP,我没有问题。这是使用 HTTP 时 Web 浏览器上的代码。

<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> 

这就是我启动独立 mosca 代理以在 websockets 上使用 HTTPS 的方式。

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

我应该如何更改浏览器上的 mqtt 客户端代码以通过 HTTPS 连接到 websockets 上的 Mosca 代理?

最佳答案

正如在您提出的其他问题中所讨论的,网络浏览器有它自己的受信任 CA 证书列表,您的自签名证书不会在此列表中,因此连接将失败。

您可以将自己的受信任证书导入浏览器,但如何执行此操作因浏览器而异,您必须对浏览器的每个实例执行此操作,因此仅对个别测试真正有用。

如果您需要允许公众成员(或您无法安装证书的浏览器)连接到您的代理,那么您必须从公认的 CA 获得证书。您将不得不为此付费或使用类似 http://letsencrypt.org 的服务

关于node.js - 通过来自浏览器的 HTTPS 通过 Web 套接字连接 mqtt 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40034487/

相关文章:

java - 从 eclipse 插件中连接到 HTTPS 会抛出异常

node.js 中的 HTTPS 代理服务器

ssl - Golang 问题 x509 : cannot verify signature: algorithm unimplemented on net/http

javascript - 如何等待订阅建立?

python - Websocket 握手状态 426

java - Tomcat websocket 回显应用程序

javascript - 回调不调用

node.js - 如何在函数中间暂停(延迟返回)并继续事件

node.js - 如何使用 Protractor 处理浏览器的 native 身份验证对话框

node.js - 如果我在图形 Node 中有 2way 关系并且 Node 相互关联,则 Neo4j 查询最短路径卡住(不工作)