繁体   English   中英

使用TLS的node.js mqtt客户端

[英]node.js mqtt client using TLS

我正在尝试使用以下软件包使用TLS实现node.js mqtt客户端;

https://www.npmjs.com/package/mqtt#client

在不使用TLS的情况下运行mqtt客户端的代码如下;

var mqtt = require('mqtt')
var client  = mqtt.connect('mqtt://test.mosquitto.org')

client.on('connect', function () {
  client.subscribe('presence')
  client.publish('presence', 'Hello mqtt')
})

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

应该如何修改以上代码以在mqtt客户端上使用TLS?

mosca MQTT代理是使用以下命令独立运行的;

mosca --key ./tls-key.pem --cert ./tls-cert.pem --http-port 3000 --http-bundle --http-static ./ | pino

应该足以将URL的protocol部分更改为mqtts://

mqtts://test.mosquitto.org

自签名证书

使用自签名证书时,可以将以下选项传递给connect函数(仅用于测试目的):

mqtt.connect('mqtts://test.mosquitto.org', {
    rejectUnauthorized: false
});

您需要为mqtt.connect()函数提供一个选项对象,该对象包括用于验证连接的CA证书。

options对象需要包含一个ca密钥,该密钥指向用于对代理证书进行签名的证书。 看起来您使用的是自签名证书,这与代理使用的证书相同。

此处描述 ca密钥

或者,您可以使用rejectUnauthorized的答案中提到的带有rejectUnauthorized密钥的任何证书。 但这使得无法检测是否有人在冒充您的经纪人

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM