4

当通过 websockets 将 MQTT 代理显示到浏览器时,我想了解保护 Mosquitto 的最佳方法。根据这篇博客文章,我目前正在将 Lighttpd 用于 websocket 层。

我的用例是单向的。我只需要向浏览器发送消息。因此,我可以使用 ACL 来防止不法分子发布消息。

但是我怎样才能阻止不法分子订阅,或者更好的是,首先建立联系?

我知道我可以使用 ID/pw 进行 MQTT 连接。所以,我猜我的应用服务器可以在用户进行身份验证后将凭据发送到浏览器,然后 Javascript 客户端可以使用这些凭据建立 MQTT/WS 连接。但是,如果我有成千上万的客户,我该如何管理 ID 和密码?还是我应该只拥有一些 ID 并定期回收它们?我应该根据mosquitto-auth-plug将此位交给 Redis 或类似的吗?

我想知道是否有更好的方法,通过保护网络服务器层内的连接。Lighttpd的mod_secdownload插件似乎提供了一个模型,通过该模型,可以根据共享机密(保留在服务器端)和时间戳的哈希值动态生成 URL。用户通过身份验证后,应用服务器将向下传递此 URL,然后客户端将使用它建立与 MQTT 代理的连接。一段时间后,URL 将过期,Javascript 客户端可以捕获此异常,如果用户仍然通过身份验证,则可以请求新的 WS 连接 URL。这与许多 API 身份验证类似。这里有优点吗?

有没有更好的方法?

谢谢,J。

4

1 回答 1

7

现在您可以使用 libwebsockets 支持构建 mosquitto,然后为 TLS 支持创建 X.509 证书,而不是 Lighttpd 方法。

在 jpmens 的这篇博文中,您可以找到分步过程以及通过 Websockets 连接 Mosquitto 代理的 Paho MQTT JavaScript 客户端。 http://jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/

于 2014-07-16T16:15:35.327 回答