首页 > 解决方案 > mosquitto_pub 给出以下错误:1408F10B:SSL 例程:ssl3_get_record:错误的版本号

问题描述

我已将 mosquitto 配置为侦听端口 8883,并为服务器生成letsencrypt 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.

这似乎是一个常见问题,但我在网上找到的解决方案似乎都不适用于我,因为它们通常涉及客户端使用 自签名证书标识自己。

所以我很难过。有谁知道是什么导致了这个错误?

标签: opensslmqttlets-encryptmosquitto

解决方案


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

如果没有这些选项,则既不会mosquitto_pubmosquitto_sub不会尝试启动 SSL 会话,而是尝试使用正常的未加密 MQTT 连接进行连接。

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


推荐阅读