【发布时间】: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 unknown1595238085: Socket error on client <unknown>, disconnecting.可能导致此错误的原因是什么?
标签: javascript react-native ssl mqtt tls1.2