0

我正在开发一个需要 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.conf从这里学习)。当我尝试向我的 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 数据包。

我该如何处理这个问题?

4

1 回答 1

0

回答我自己的问题。net_mosq.c从mosquitto 存储库的提交中阅读后,事实证明还必须包含一个参数:SSL_OP_NO_TLSv1_3在构建时,构建命令将是:

make WITH_DOCS=no  CPPFLAGS="-DSSL_OP_NO_TLSv1_3"

sudo make install  WITH_DOCS=no

然后使用相同的命令再次启动 mosquitto MQTT 代理和发布者 mosquittomosquitto_pub详细信息在我上面的帖子中),现在它运行良好。

于 2019-11-21T07:47:00.310 回答