Paho javascript 客户端 + mosquitto Websockets + Tls

Posted

技术标签:

【中文标题】Paho javascript 客户端 + mosquitto Websockets + Tls【英文标题】:Paho javascript client + mosquitto Websockets + Tls 【发布时间】:2021-09-10 14:05:01 【问题描述】:

我一直在尝试为 mosquitto 代理添加安全层,我需要一些帮助。

我用这个配置配置了我的代理:

...
#logs


#authentication

password_file /etc/mosquitto/passwd
allow_anonymous false

#user
user mosquitto

#broker settings
require_certificate false
listener 8081
protocol websockets
http_dir /var/www/html
keyfile /etc/mosquitto/certs/mqtt-server.key
certfile /etc/mosquitto/certs/mqtt-server.crt
cafile /etc/mosquitto/ca_certificates/mosquitto-certificate-authority.crt

这是日志输出的内容:

1631281308: mosquitto version 2.0.12 starting
1631281308: Config loaded from /etc/mosquitto/mosquitto.conf.
1631281308: Opening websockets listen socket on port 8081.
1631281308: mosquitto version 2.0.12 running

我根据此站点生成了我的证书:https://www.raspberrypi.org/forums/viewtopic.php?t=287326。我相信证书没有问题,因为在使用 mosquitto-clients 进行测试时一切正常(在 .conf 文件中注释协议 websockets)。

我从这个站点https://jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/ 在我的 nginx 服务上上传了一个测试代码,以测试与安全 websockets 的连接,但它给我的只是“连接失败:AMQJS0007E 套接字错误:undefined.Retrying”。

你们能帮帮我吗?

【问题讨论】:

这与编程有关吗?因为我在这里看不到任何编程问题。 我本可以在这里包含所有的 html、css 和 java,但为了简单起见,我留在了最后一个链接中。 【参考方案1】:

如果您生成自己的证书,则需要将 CA 证书导入浏览器,以便它知道信任它来签署代理证书。

与网页不同,当连接由 javascript 触发时,浏览器不会提示您信任证书,您需要在尝试连接之前手动执行。

【讨论】:

我在 google chrome 的隐私设置中导入了我的证书,你说的是这个吗? 是的,但这取决于您将哪个证书导入到哪个部分。您需要将 CA 证书导入为受信任的 CA 我会查看它并提供更新。谢谢 我认为我做得对。根据我的搜索,它应该在设置不正确时给你一个警告。我没有任何警告,所以我假设这不是我描述的错误的原因。还是谢谢你。 正如我在回答中所说,当从 Javascript 触发连接时,浏览器不会警告/询问您有关证书的信息,它只会失败

以上是关于Paho javascript 客户端 + mosquitto Websockets + Tls的主要内容,如果未能解决你的问题,请参考以下文章

Paho -物联网 MQTT C Cient的实现和详解

org.eclipse.paho.client mqtt客户端连接超时

MQTT研究之EMQ:eclipse的paho之java客户端使用注意事项

MQTT paho客户端连接超时错误

Android WebView 和 WebSockets / Paho.MQTT

Mac安装Eclipse Paho遇到的问题