通过WebSocket连接到Mosquitto代理时出错

通过WebSocket连接到Mosquitto代理时出错,websocket,mosquitto,hivemq,Websocket,Mosquitto,Hivemq,当我尝试连接mqtt服务器时,使用上的客户机时,出现以下错误: Firefox can’t establish a connection to the server at ws://burooq.com:8083/mqtt. Connect failed: AMQJS0007E Socket error:undefined. 我正在使用以下参数: 主机:burooq.com 端口:8083 运行命令mosquitto,我得到响应: [ 1615.745348]~DLT~ 1670~INFO

当我尝试连接mqtt服务器时,使用上的客户机时,出现以下错误:

Firefox can’t establish a connection to the server at ws://burooq.com:8083/mqtt.
Connect failed: AMQJS0007E Socket error:undefined.
我正在使用以下参数:

  • 主机:burooq.com
  • 端口:8083
运行命令mosquitto,我得到响应:

[ 1615.745348]~DLT~ 1670~INFO     ~FIFO /tmp/dlt cannot be opened. Retrying later...
1608926628: mosquitto version 1.6.9 starting
1608926628: Config loaded from /etc/mosquitto/conf.d/default.conf.
1608926628: Opening ipv4 listen socket on port 1883.
1608926628: Opening ipv4 listen socket on port 8883.
1608926628: Opening ipv6 listen socket on port 8883.
1608926628: Opening websockets listen socket on port 8083.
我的MOSQUITO conf文件是:

allow_anonymous false
password_file /etc/mosquitto/passwd

listener 1883 localhost

listener 8883
certfile /etc/letsencrypt/live/burooq.com/cert.pem
cafile /etc/letsencrypt/live/burooq.com/chain.pem
keyfile /etc/letsencrypt/live/burooq.com/privkey.pem

listener 8083
protocol websockets
certfile /etc/letsencrypt/live/burooq.com/cert.pem
cafile /etc/letsencrypt/live/burooq.com/chain.pem
keyfile /etc/letsencrypt/live/burooq.com/privkey.pem
查找所有打开的端口,我得到:

     To                         Action      From
     --                         ------      ----
[ 1] Apache Full                ALLOW IN    Anywhere
[ 2] 22/tcp                     ALLOW IN    Anywhere
[ 3] 22                         ALLOW IN    Anywhere
[ 4] 80/tcp                     ALLOW IN    Anywhere
[ 5] 80                         ALLOW IN    Anywhere
[ 6] 443/tcp                    ALLOW IN    Anywhere
[ 7] 443                        ALLOW IN    Anywhere
[ 8] 80,443/tcp                 ALLOW IN    Anywhere
[ 9] 8883                       ALLOW IN    Anywhere
[10] 8083                       ALLOW IN    Anywhere
[11] 2222                       ALLOW IN    Anywhere
[12] Apache Full (v6)           ALLOW IN    Anywhere (v6)
[13] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[14] 22 (v6)                    ALLOW IN    Anywhere (v6)
[15] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[16] 80 (v6)                    ALLOW IN    Anywhere (v6)
[17] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
[18] 443 (v6)                   ALLOW IN    Anywhere (v6)
[19] 80,443/tcp (v6)            ALLOW IN    Anywhere (v6)
[20] 8883 (v6)                  ALLOW IN    Anywhere (v6)
[21] 8083 (v6)                  ALLOW IN    Anywhere (v6)
[22] 2222 (v6)                  ALLOW IN    Anywhere (v6)
  • MOSQUITO版本1.6.9
  • Ubuntu版本20.04.1 LTS

您不能使用IP地址,您必须使用获得证书的主机名,例如burooq.com

原因是浏览器将无法验证来自代理的证书,因为它没有IP地址的CN或SAN条目

您还需要确保防火墙配置为允许外部访问端口8083

编辑:


另外,在仔细检查了HiveMQ Websocket showcase页面之后,它似乎不支持通过Websocket代理连接到TLS安全的MQTT。

我拥有带有操作(允许进入)的端口8083,并且可以从任何位置进行连接。但是仍然遇到相同的错误,如果您尝试使用主机名,仍然是相同的error@ASH阅读编辑,HiveMQ站点不支持MQTT over Websockets with TLS。请建议任何支持相同的替代方案。ThxOn是我的Ubuntu机器之一,我使用的是相同的mosquitto版本1.6.9,面临着同样的问题。你的问题解决了吗。?我还注意到,我有另一台运行Ubuntu16的机器,它安装了MOSQUITO版本1.6.10,我没有遇到这个问题。现在我想知道,它是否与这个版本1.6.9有关