You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mosquitto 1.4.9 WSS连接失败问题技术求助

解决Mosquitto 1.4.9 WSS连接失败问题

我来帮你排查下这个WSS连接失败的问题,结合你给出的环境和日志信息,核心问题主要出在libuv编译缺失和WSS端口配置不全上,一步步来解决:

一、先解决libuv未编译的核心问题

Mosquitto 1.4.x版本的WebSockets(尤其是加密的WSS)依赖libuv库,如果编译时没启用这个选项,WSS的TLS握手功能会直接失效,这也是你启动日志提示“libuv支持未编译”的原因。

重新编译带libuv支持的Mosquitto

  1. 先安装libuv的开发依赖包(以Debian/Ubuntu为例,其他系统替换成对应包管理命令):
    sudo apt-get install libuv1-dev
    
  2. 重新编译Mosquitto 1.4.9,确保启用libuv和websockets支持:
    # 下载源码(如果已经有可以跳过)
    wget http://mosquitto.org/files/source/mosquitto-1.4.9.tar.gz
    tar zxf mosquitto-1.4.9.tar.gz
    cd mosquitto-1.4.9
    # 配置编译选项,一定要加--with-libuv和--with-websockets
    ./configure --with-libuv --with-websockets
    # 编译安装
    make
    sudo make install
    sudo ldconfig
    
    编译时注意看输出,要确保出现libuv support: yes,这才说明libuv被正确集成了。

二、修正Mosquitto配置,启用8083端口的WSS

你的8083目前只支持明文WS,需要给它加上TLS配置才能启用WSS。打开/etc/mosquitto/mosquitto.conf,补充以下配置(和8883用相同的证书即可):

# 保留你原有的1883、8883配置
listener 1883
listener 8883
cafile /path/to/your/ca.crt
certfile /path/to/your/server.crt
keyfile /path/to/your/server.key

# 配置8083为WSS端口
listener 8083
protocol websockets
# 绑定加密证书,和8883一致
cafile /path/to/your/ca.crt
certfile /path/to/your/server.crt
keyfile /path/to/your/server.key

如果需要同时保留明文WS和加密WSS,可以拆分两个端口,比如8083(WS)和8084(WSS),分别配置即可。

三、修正客户端连接方式

1. Web界面连接WSS

确保你用的连接地址是wss://home.fqdn.com:8083,同时要保证浏览器信任你的证书(可以手动添加证书例外,或者用CA签发的正规证书)。之前的“forbidding on uri sanitation”错误大多是因为WSS未启用,导致请求被拦截。

2. mosquitto_pub连接WSS

之前你用mosquitto_pub连8083提示TLS错误,是因为默认用MQTT协议连接WS端口,需要指定websockets协议和TLS参数:

mosquitto_pub --protocol websockets --host home.fqdn.com --port 8083 --topic test/topic --message "test content" --cafile /path/to/your/ca.crt

四、验证修复效果

重启Mosquitto服务:

sudo systemctl restart mosquitto
# 或者手动启动看实时日志
mosquitto -c /etc/mosquitto/mosquitto.conf -v

确认启动日志里不再出现“libuv支持未编译”的提示,然后测试WSS连接:

  • 用Web界面测试连接
  • 用上述mosquitto_pub命令测试发布
  • 检查日志是否还有lws_read: Unhandled state 76这类错误,如果还有,检查证书文件的路径和权限(确保Mosquitto进程能读取证书)

最后提个建议:Mosquitto 1.4.9是2017年的老版本,WebSockets支持存在不少已知bug,建议升级到最新稳定版,不仅能解决这类问题,安全性也更高。

内容的提问来源于stack exchange,提问作者Havock

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:00:29