我已将mosquitto配置为侦听端口8883,并为服务器生成了letencrypt SSL证书。到目前为止一切顺利。
我可以成功测试TLS连接:
openssl s_client -connect mqtt.example.com:8883
给我证书和会话信息,mosquitto的日志报告连接成功。
我也可以使用paho python库成功发布消息。
但是,当我尝试使用mosquitto_pub
时,它会这样做:
$ mosquitto_pub -h mqtt.example.com -p 8883 -u foobar -P "" -t foobar -m test
Client connection from XX.XX.XX.XX failed: error:1408F10B:SSL routines:ssl3_get_record:wrong version number.
这似乎是一个常见问题,但是我发现在网络上找到的所有解决方案似乎都不适用于我,因为这些解决方案通常涉及客户端使用self-signed certificate进行身份识别。
所以我很困惑。有人知道导致此错误的原因吗?
答案 0 :(得分:1)
要使mosquitto_pub
尝试启动SSL连接,您需要提供--cafile
或--capath
指向CA证书的位置以验证代理。
没有这些选项,mosquitto_pub
或mosquitto_sub
都不会尝试启动SSL会话,而是尝试使用普通的未加密MQTT连接进行连接。
在大多数Linux发行版中,您可以使用--capath
并指向/etc/ssl/certs
目录