mosquitto_pub给出以下错误:1408F10B:SSL例程:ssl3_get_record:错误的版本号

时间:2018-09-09 09:13:18

标签: openssl mqtt lets-encrypt mosquitto

我已将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进行身份识别。

所以我很困惑。有人知道导致此错误的原因吗?

1 个答案:

答案 0 :(得分:1)

要使mosquitto_pub尝试启动SSL连接,您需要提供--cafile--capath指向CA证书的位置以验证代理。

没有这些选项,mosquitto_pubmosquitto_sub都不会尝试启动SSL会话,而是尝试使用普通的未加密MQTT连接进行连接。

在大多数Linux发行版中,您可以使用--capath并指向/etc/ssl/certs目录