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

MQTT客户端连接警告:TLS ServerName设为IP不符合RFC 6066如何解决?

解决MQTT客户端连接IP代理时的TLS警告问题

问题原因

这个警告来自Node.js的DEP0123弃用提示,RFC 6066明确规定TLS的ServerName(SNI扩展)不能设置为IP地址,当前版本仅抛出警告,未来版本会直接忽略该设置。

代码修正与警告解决

1. 修复客户端配置错误

你的代码存在两处基础配置错误:

  • options.host字段错误添加了mqtts://前缀,host仅需填写纯IP地址
  • options.port使用了字符串类型,应改为数字类型

2. 禁用SNI扩展消除警告

在连接选项中显式设置servername: ''(或undefined),阻止Node.js将IP作为ServerName发送,完全符合RFC规范:

修改后的完整代码:

var mqtt = require('mqtt')
var fs = require('fs');
var certFile = fs.readFileSync("./client.crt");
var keyFile = fs.readFileSync("./client.key");
var caFile = fs.readFileSync("./ca.crt");

console.log("connecting...")
var client = mqtt.connect("mqtts://172.27.224.1:8883", {
  host: '172.27.224.1', 
  port: 8883, 
  cert: certFile, 
  key: keyFile, 
  ca: caFile, 
  connectTimeout: 5000, 
  username: "user", 
  password: "xxx",
  servername: '' // 关键配置:禁用SNI扩展,消除警告
})

client.on('connect', function () {
  console.log("Connected")
  client.subscribe('test', function (err) {
    if (!err) {
      console.log("subscribed")
    } else {
      console.log(err);
    }   
  })
})

client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
})

client.on('error', function (err) {
  console.log(err)
  client.end();
  setTimeout(() => {
    client.reconnect()
  }, 20000);
})

client.on('reconnect', function () {
  console.log("reconnecting")
})

client.on('disconnect', function () {
  console.log("disconnected")
})

client.on('offline', function () {
  console.log("offline")
})

client.on('end', function () {
  console.log("end")
})

证书匹配补充说明

结合你之前的证书问题,需要确保MQTT代理的证书Subject Alternative Name(SAN)字段包含该IP地址,否则会触发证书验证失败错误。若证书未包含IP,需重新生成证书,例如使用OpenSSL时添加-addext "subjectAltName=IP:172.27.224.1"参数。

测试环境临时调试可添加rejectUnauthorized: false关闭证书验证,但生产环境绝对禁止,会引发严重安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:01:55