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

Aedes MQTT Broker TLS/SSL连接失败问题排查求助

解决Aedes MQTT Broker TLS/SSL握手失败问题

核心问题定位与修复

1. TLS服务器创建参数顺序错误

你的代码中tls.createServer的参数顺序完全颠倒,Node.js的tls.createServer第一个参数应为TLS配置选项,第二个才是连接处理回调。错误的参数顺序导致服务器未加载证书配置,直接引发握手失败。

修正后的代码片段:

// 将options放在第一个参数位置,正确传入TLS配置
const server = tls.createServer(options, aedes.handle);

2. 证书生成命令的配置文件不匹配

你创建的配置文件是ref.cfg,但执行openssl命令时指定的是req.cnf,这会导致openssl使用默认配置生成证书,缺少你定义的Subject Alternative Name(SAN)等关键扩展,引发客户端域名验证失败。

修正后的openssl命令:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout cert.key -out cert.pem -config ref.cfg -sha256

3. 客户端需信任自签证书

自签证书不被系统默认信任,客户端需明确配置信任该证书:

  • MQTTX配置:在连接设置的「SSL/TLS」选项中,开启「CA证书」并选择生成的cert.pem文件;测试环境可临时关闭「证书验证」(不建议生产环境使用)。
  • curl测试:添加--cacert参数指定信任的证书:
    curl -v https://localhost:8883 --cacert cert.pem
    

验证修复流程

  1. 用修正后的命令重新生成证书
  2. 启动修改后的Aedes服务器
  3. 配置了信任证书的MQTTX客户端连接mqtts://localhost:8883,即可正常建立TLS连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:47:03