簡體   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