You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证Mosquitto的MQTT连接是否采用TLS加密?

验证MQTT连接是否使用TLS加密的方法

问题背景

服务器运行Ubuntu 22.04,客户端为MacOS,已配置Mosquitto的8883端口启用TLS并要求身份验证,通过MQTT Explorer可成功连接,但需确认该连接未因握手错误退化为未加密状态。

验证方法

1. 查看Mosquitto详细调试日志

修改Mosquitto配置文件/etc/mosquitto/mosquitto.conf,添加或调整日志级别:

log_type all

重启Mosquitto服务:

sudo systemctl restart mosquitto

重新用MQTT Explorer连接后,查看/var/log/mosquitto/mosquitto.log,若存在类似以下日志,说明TLS握手成功:

1680357916: New connection from 2.3.4.5:61585 on port 8883.
1680357916: TLS handshake started from 2.3.4.5:61585
1680357917: TLS handshake successful from 2.3.4.5:61585
1680357917: New client connected from 2.3.4.5:61585 as mqtt-explorer-e65374de (p2, c1, k60, u'user').

2. 服务器端抓包分析

在服务器终端执行tcpdump命令抓取8883端口的流量:

sudo tcpdump -i any port 8883 -A

保持命令运行,用客户端发起连接。如果是TLS加密连接,抓包内容会是不可读的乱码;若存在明文的CONNECT、USERNAME等MQTT协议字段,说明连接未加密。

3. Mac客户端用openssl测试TLS连接

在Mac终端执行以下命令,直接与服务器8883端口建立TLS连接:

openssl s_client -connect example.com:8883

若连接成功,终端会输出完整的TLS握手信息,包括证书颁发机构、加密套件、会话状态等内容,证明TLS连接正常;若握手失败或无TLS相关输出,说明连接未使用加密。

4. 强制TLS连接验证

临时修改Mosquitto配置,关闭1883未加密端口(注释或删除listener 1883行),重启服务后,用MQTT Explorer尝试不启用TLS选项连接8883端口。若连接失败,说明8883端口仅接受TLS加密连接,当前正常连接必然是加密状态。

内容的提问来源于stack exchange,提问作者pkkrusty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:43:10