Openssl Mosquito_pub给出以下错误:1408F10B:SSL例程:ssl3_get_记录:版本号错误

Openssl Mosquito_pub给出以下错误:1408F10B:SSL例程:ssl3_get_记录:版本号错误,openssl,mqtt,lets-encrypt,mosquitto,Openssl,Mqtt,Lets Encrypt,Mosquitto,我已经将MOSQUITO配置为在端口8883上侦听,并为服务器生成了letsencrypt SSL证书。到目前为止还不错 我可以成功测试TLS连接: openssl s_client-connect mqtt.example.com:8883向我提供证书和会话信息,mosquitto的日志报告连接成功 我还可以使用paho python库成功发布消息 但是,当我尝试使用mosquitto_pub时,它会执行以下操作: $ mosquitto_pub -h mqtt.example.com -p

我已经将MOSQUITO配置为在端口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.
这似乎是一个常见的问题,但我发现搜索web的所有解决方案似乎都不适用于我,因为它们通常涉及到客户端使用一个


所以我被难住了。有人知道导致此错误的原因吗?

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

没有这些选项,
mosquitto_pub
mosquitto_sub
都不会尝试启动SSL会话,而是尝试使用正常的未加密MQTT连接进行连接


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

啊,谢谢,我没有意识到
mosquitto\u pub
默认情况下不信任证书。Lifesaver。我没有意识到需要capath,因为我认为它是用于自签名证书的,客户端会接受letsencrypt作为“非自签名=全局受信任”CA。我没有意识到它首先需要一个受信任CA列表,而/etc/ssl/certs正是这一点。linux发行版附带了一个可信CA列表,它是如此透明,以至于我忘记了它。