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客户端包的,只是默认装的是精简版,步骤如下:
- 先卸载现有的无TLS支持的客户端包:
opkg remove mosquitto-client - 更新软件源,确保能找到对应的包:
opkg update - 安装带SSL/TLS支持的版本,包名一般是
mosquitto-client-ssl(不同OpenWRT版本可能略有差异,要是找不到可以搜一下mosquitto相关的包):opkg install mosquitto-client-ssl - 装完之后再跑之前的
mosquitto_pub命令,应该就能正常通过TLS连接到Google Cloud的MQTT代理了。要是还不行,先检查下roots.pem证书的路径对不对,或者直接写绝对路径试试。
内容的提问来源于stack exchange,提问作者DazWilkin
相关产品推荐
相关产品推荐

