mosquitto_pub上的运行时错误,在构建时启用了TLS v1.3

问题描述 投票:0回答:1

[我正在开发需要TLS v1.3和MQTT v5.0的应用程序,作为工作的一部分,我必须在不同物理主机的Debian系统上构建mosquitto MQTT代理和订户。

[从mosquitto Github存储库中,我设法构建了mosquitto库(v1.6.7)和二进制工具(其README.md描述默认在构建时启用了TLS):

make WITH_DOCS=no
make install  WITH_DOCS=no

我还设置了CA证书/服务器证书(用于MQTT代理),并修改了mosquitto.conflearn from here)。当我尝试向我的MQTT经纪人发布消息时,出现以下错误:

mosquitto_pub -d --tls-version  tlsv1.3   --cafile  ./ca.crt  -i rpi3peer -V mqttv5  -h 123.45.6.78  -p 8883  -u MY_BROKER_NAME  -P BROKER_PASSWD  -t "topic/placed/here"  -m "put some messsage"

> Error: Protocol tlsv1.3 not supported

[在MQTT代理上,它只是在TCP级别上建立了一个新连接,然后立即关闭,我还使用Wireshark捕获了代理和客户端之间的一些数据包,但是那里没有TLS v1.3数据包。

我该如何处理此问题?

mqtt mosquitto tls1.3
1个回答
0
投票

回答我自己的问题。从mosquitto信息库的net_mosq.c中读取了this commit后,发现必须再包含一个参数:SSL_OP_NO_TLSv1_3在构建时,构建命令将是:

make WITH_DOCS=no  CPPFLAGS="-DSSL_OP_NO_TLSv1_3"

sudo make install  WITH_DOCS=no

然后使用相同的命令mosquittomosquitto_pub(在我的上一篇文章中详细介绍)再次启动mosquitto MQTT经纪人和发布者,现在可以正常使用。

© www.soinside.com 2019 - 2024. All rights reserved.