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

运行Mosquitto MQTT Broker时出现间歇性OpenSSL Error 0A000126

问题背景

客户环境中出现间歇性MQTT连接故障,系统运行正常时会突然出现连接断开、SSL错误及协议错误。

环境信息

  • OpenSSL 3.1.0 14 Mar 2023(库版本与版本号一致)
  • TLS 1.2
  • Mosquitto MQTT Broker(未使用Nginx)

故障日志示例

Nov 09 22:53:25 medius-g2-3865 mosquitto[443]: 1699570405: New connection from 192.168.100.253:47154 on port 8883.
Nov 09 22:53:25 medius-g2-3865 mosquitto[443]: 1699570405: New client connected from 192.168.100.253:47154 as VLUCADBMV07063 (p2, c1, k60).
Nov 09 22:53:25 medius-g2-3865 mosquitto[443]: 1699570405: OpenSSL Error[0]: error:0A000126:SSL routines::unexpected eof while reading
Nov 09 22:53:25 medius-g2-3865 mosquitto[443]: 1699570405: Client VLUCADBMV07063 closed its connection.
Nov 09 22:53:25 medius-g2-3865 mosquitto[443]: 1699570405: New connection from 192.168.100.253:47155 on port 8883.
Nov 09 22:53:25 medius-g2-3865 mosquitto[443]: 1699570405: New client connected from 192.168.100.253:47155 as VLUCADBMV07063 (p2, c1, k60).
Nov 09 22:53:27 medius-g2-3865 mosquitto[443]: 1699570407: Client VLUCADBMV07063 disconnected: Protocol error.
Nov 09 22:53:27 medius-g2-3865 mosquitto[443]: 1699570407: New connection from 192.168.100.253:47157 on port 8883.

排查思路

网络层面

  • 持续监控链路状态:在Broker端执行ping -t 192.168.100.253或用mtr工具,排查故障发生时是否存在丢包、延迟突增或网络中断情况
  • 检查网络设备配置:确认防火墙、交换机是否设置了TCP会话超时限制,是否会主动断开长时间无数据的SSL连接,或存在带宽阈值导致连接被截断

OpenSSL与TLS配置

  • 验证SSL兼容性:检查mosquitto.conf中的ciphers、tls_version配置,确保使用TLS 1.2标准兼容的加密套件,避免使用OpenSSL 3.1中已废弃的套件
  • 核查证书有效性:确认客户端与Broker的证书是否过期、证书链是否完整,自签名证书是否已正确导入双方信任库
  • 升级OpenSSL版本:OpenSSL 3.1.0存在已知SSL/TLS相关bug,尝试升级至3.1.x系列最新稳定版(如3.1.4),验证是否解决EOF异常问题

Mosquitto Broker

  • 启用调试日志:修改mosquitto.conf设置log_type all,重启Broker后获取更详细的连接、SSL握手及协议交互日志,定位故障发生的具体阶段
  • 检查版本兼容性:确认当前Mosquitto版本是否与OpenSSL 3.1存在兼容问题,尝试升级至最新稳定版或降级到适配版本
  • 核查会话配置:日志中客户端k60表示keepalive为60秒,检查Broker是否有会话超时限制,或客户端是否在keepalive周期内未正常发送心跳包导致连接被断开

客户端侧

  • 检查客户端实现:确认客户端使用的MQTT库是否兼容TLS 1.2与OpenSSL 3.1,是否存在资源泄漏(如未正确释放连接)导致的异常断开
  • 收集客户端日志:获取客户端的连接、SSL错误日志,排查是否存在客户端主动断开或本地SSL库抛出的错误
  • 隔离测试:仅让故障客户端连接Broker,观察故障是否复现,排除多客户端并发导致的资源竞争问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:32:27