【问题标题】:MQTT unable to connect over TLSMQTT 无法通过 TLS 连接
【发布时间】:2020-11-07 04:36:25
【问题描述】:

我正在尝试使用 MQTT.js 在 react-native 中通过 TLS 连接到 MQTT 代理。根据文档,我尝试了以下代码:

const options = {
  port: PORT,
  host: HOST,
  protocol: 'mqtts',
  secureProtocol: 'TLS_method',
  username: USERNAME,
  password: PASSWORD,
  ca: CA_FILE
}

const client = mqtt.connect(options);

client.on('error', (error) => {
  console.log("error", error);
});

client.on('connect', () => {
  console.log("connected");
});

options对象会通过tls.connect()传递,所以我指定了证书文件。

连接不返回错误,但客户端未连接。 我做错了什么?

【问题讨论】:

  • 你在代理日志中看到它甚至尝试连接吗?
  • “ca: CA_FILE”是您证书的实际内容吗? "ca: fs.readFileSync('./cacert.pem')" 以及 hardlib 所说的:你在 MQTT 代理日志文件中看到了什么?
  • 是的,CA_FILE 是内容,而不是路径,并且代理日志显示:1595238085: OpenSSL Error: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown 1595238085: Socket error on client <unknown>, disconnecting. 可能导致此错误的原因是什么?

标签: javascript react-native ssl mqtt tls1.2


【解决方案1】:

尝试使用 React 本机 MQTT https://github.com/FrozenPyrozen/rn-native-mqtt 的分支,它与 Android 和 IOS 上的 TLS 连接一起使用

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 2022-01-02
  • 2021-08-30
  • 2020-04-03
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多