ທົດສອບການສື່ສານກັບ MQTT broker ແບບ LTS/SSL Part #1 setup and nodejs client

xangnam phiasakha
VtCamp
Published in
2 min readMay 19, 2018

ສະບາຍດີທຸກຄົນ. ຫຼັງຈາກບົດຄວາມວ່າດ້ວຍເລື່ອງການສ້າງ MQTT broker ຂຶ້ນມາໃຊ້ງານ ບັນທຶກການສ້າງ MQTT broker ສຳລັບເຊື່ອມຕໍ່ອຸປະກອນ IOT ດ້ວຍ Nodejs ເຊິ່ງໃນບົດຄວາມດັ່ງກວ່າບໍ່ໄດ້ລົງລາຍລະອຽດກ່ຽວກັບການ config ໃຫ້ mqtt broker ຂອງເຮົາສື່ສານແບບ TLS/SSL ແລະ ວີທີການເຊື່ອມຕໍ່ຂອງ MQTT client ດັ່ງນັ້ນວັນນີ້ຈະມາອະທິບາຍ ແລະ ລົງລາຍລະອຽດກ່ຽວກັບເລື່ອງນີ້ເຊິ່ງຈະແບ່ງເປັນພາກໆໄປແຕ່ລະພາກກໍ່ເປັນແຕ່ລະ programming language ທີ່ໃຊ້ເປັນ MQTT client.

ເລີ່ມດ້ວຍການຕັ້ງຄ່າໃຫ້ MQTT broker ໃຊ້ການສື່ສານແບບ TLS/SSL

ຈາກບົດຄວາມກ່ອນເຮົາໃຊ້ mosca ໃນການສ້າງເປັນ mqtt broker. ກ່ອນອື່ນເຮົາມາ generate self-signed certificate ເສຍກ່ອນ.

private key

$ openssl genrsa -out www.example.com.key 2048

certificate

openssl req -new -x509 -key www.example.com.key -out www.example.com.cert -days 3650 -subj /CN=www.example.com

ແລ້ວນຳ file ທີ່ໄດ້ຈາກການ generate ໃສ່ເຂົ້າໄປໃນ config mosca

var SECURE_KEY = path.join(__dirname ,'/secure' ,'/www.example.com.key');
var SECURE_CERT = path.join(__dirname ,'/secure','/www.example.com.cert');
exports.mqttsetting = {
...
secure : {
port: 8883,
keyPath: SECURE_KEY,
certPath: SECURE_CERT
},
allowNonSecure: true
...
}

ຫຼັງຈາກນັ້ນກໍ່ restart mosca ຖ້າບໍ່ມີບັນຫາໃດໆ mqtt broker ຂອງເຮົາກໍ່ພ້ອມທີ່ຈະສື່ສານແບບ LTS/SSL ຜ່ານ port 8883 ທີ່ເປັນ default port ຂອງ mqtts.

ທົດສອບການເຊື່ອມຕໍ່ ແລະ ສື່ສານ MQTT broker ແບບ TLS/SSL ດ້ວຍ MQTT.js

MQTT.js ເປັນ mqtt client ທີ່ເຮັດໃຫ້ສາມາດເຊື່ມຕໍ່ເຂົ້າໄປ MQTT broker ໄດ້. ເຊິ່ງ support ການສື່ສານແບບ TLS/SSL ໃນໂຕວ່າແລ້ວກໍ່ມາລອງໃຊ້ງານເບິ່ງ

install MQTT.js

$ npm install mqtt --save or yarn add mqtt

ຕົວຢ່າງ code ການສື່ສານແບບ TLS/SSL

var mqtt = require('mqtt')var host = 'mqtts://example.com';
var port = 8883;
var options = {
rejectUnauthorized: false,
port: port,
username : 'user',
password : 'password'
}
var client = mqtt.connect(host,options);client.subscribe('user/msg')
client.publish('user/msg', 'Current time is: ' + new Date())
client.on('message', function (topic, message) {
console.log(message.toString())
})
client.on('connect', function () {
console.log('Connected')
})
client.on('error',function (err) {
console.log(err)
})

ສ່ວນສຳຄັນທີ່ເຮົາຈະຕ້ອງກຳນົດຄື port ທີ່ໃຊ້ເຊື່ອມຕໍ່ເຊິ່ງໂດຍທົ່ວໄປແມ່ນ 8883 ສຳລັບ TLS/SSL ແລະ rejectUnauthorized: false ເຮັດໃຫ້
ເຮົາສາມາດເຊື່ອມຕໍ່ເຂົ້າໄປດ້ວຍ mqtts ຂອງ mqtts://example.com ໂດຍບໍ່ຕ້ອງ verify certificate.

ຜົນຂອງການທົດສອບ

$ node testmqtt.js
Connected
Current time is: Fri Sep 15 2017 23:44:16 GMT+0700 (SE Asia Standard Time)

ສະແດງວ່າເຮົາສາມາດເຊື່ອມຕໍ່ ແລະ ສື່ສານດ້ວຍ MQTT protocol ແບບ TLS/SSL ໄດ້ແລ້ວ ແລະ ບົດຄວາມຕໍ່ໄປເປັນການຕິດຕໍ່ເຂົ້າໄປຂອງ ESP8266

ຂອບໃຈທີ່ອົດທົນອ່ານ ແລະ ແປລາວເປັນລາວ (:

--

--