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

OpenWRT下mosquitto_pub不支持TLS,但MQTT代理要求TLS(已解决)

解决OpenWRT下Mosquitto客户端无TLS支持的问题

我已经搞定这个问题啦,解决方案直接看文末就行~作为Mosquitto/MQTT的新手,要是内容有考虑不周的地方,还请大家多多谅解!

先说说正常情况(Ubuntu等系统)

在Ubuntu这类常规Linux系统上安装Mosquitto之后,一切都很顺畅,我可以随便用下面的命令连接Google Cloud的MQTT代理:

mosquitto_pub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/events...

遇到的坑(OpenWRT环境)

换到OpenWRT系统之后就出问题了——当前装的mosquitto_pub居然不支持TLS!但我的MQTT代理(就是Google Cloud那个)必须用TLS才能连接,这直接卡壳了。


解决方案

其实OpenWRT里是有带TLS支持的Mosquitto客户端包的,只是默认装的是精简版,步骤如下:

  1. 先卸载现有的无TLS支持的客户端包:
    opkg remove mosquitto-client
    
  2. 更新软件源,确保能找到对应的包:
    opkg update
    
  3. 安装带SSL/TLS支持的版本,包名一般是mosquitto-client-ssl(不同OpenWRT版本可能略有差异,要是找不到可以搜一下mosquitto相关的包):
    opkg install mosquitto-client-ssl
    
  4. 装完之后再跑之前的mosquitto_pub命令,应该就能正常通过TLS连接到Google Cloud的MQTT代理了。要是还不行,先检查下roots.pem证书的路径对不对,或者直接写绝对路径试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:15:10