openssl - 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.
这似乎是一个常见问题,但我在网上找到的解决方案似乎都不适用于我,因为它们通常涉及客户端使用 自签名证书标识自己。
所以我很难过。有谁知道是什么导致了这个错误?
解决方案
要mosquitto_pub
尝试启动 SSL 连接,您需要提供指向 CA 证书位置的--cafile
或--capath
指向 CA 证书的位置以验证代理。
如果没有这些选项,则既不会mosquitto_pub
也mosquitto_sub
不会尝试启动 SSL 会话,而是尝试使用正常的未加密 MQTT 连接进行连接。
在大多数 Linux 发行版上,您可以使用--capath
并指向/etc/ssl/certs
目录
推荐阅读
- javascript - 将 DOM 元素保存到 localStorage
- c# - Emgu.CV.Util.CvException: 'OpenCV: i < 0' 异常
- kotlin - Kotlin:将函数范围作为参数传递
- c# - 有没有办法使用库专门为 LED 引脚设置值?
- c# - Razor 视图 @model 找不到类型或命名空间名称“x”
- css - EXT JS:css和相对于父容器的位置
- google-sheets-api - Integromat:重命名 Google 表格(单个表格与整个电子表格)
- angular - 为什么更正导入后 rjxjs-compact 错误仍然存在
- javascript - 这是关闭还是不同的东西?
- javascript - 尝试导入错误:“SupportedPackages”未从“@tensorflow-models/facemesh”导出(导入为“facemesh”)