MQTT协议应用TLS

本文介绍了MQTT协议在物联网中的重要性,并详细阐述了如何通过TLS实现MQTT的安全通信,包括客户端与服务器的握手过程、加密密钥交换等步骤,旨在提升物联网通信的安全性,防止中间人攻击。
摘要由CSDN通过智能技术生成

前言

做了很久的实验,一直没能成功,最后还是down的大佬的源码,侵删。

正文

简介

MQTT协议是物联网应用中重要的应用层协议,上一次实验开展了MQTT协议的分析,对MQTT协议的长连接机制、发布/订阅工作模式交互机制进行了分析。但如果MQTT协议不进行安全实现,黑客可以恶意发布信息给服务器,特别是在工业、交通等物联网应用场合后果不堪设想。本实验旨构建MQTT协议安全通信。

要求

(1)掌握MQTT的安全通信的基本原理。

(2)设计MQTT安全通信的安全措施。

(3)实现基于TLS的MQTT通信。

基本步骤

(1)应用层:MQTT协议提供了客户标识以及用户名密码,以便验证设备。基于ACL对主题的订阅和发布权限设置基本的授权。

(2)传输层:传输层可使用TLS加密、验证证书机制,防止中间人攻击。

(3)网络层:可以通过专线或者使用VPN来连接设备与MQTT代理,以提高网络传输的安全性。可以通过防火墙保护MQTT代理端,比如限制端口、限制协议、限制IP段。

注意构建一个局域网,模拟MQTT服务端(代理端)、客户端(分订阅和发布),运用Wireshark抓包分析安全通信过程。

Z1QfoT.png

具体过程

服务器

var mosca = require('mosca')
var SECURE_KEY = __dirname + '/tls-key.pem';
var SECURE_CERT = __dirname + '/tls-cert.pem';
var settings = {
   
  logger: {
   
    name: "secureExample",
    level: 40,
  },
  secure : {
    
    port: 9090,
    keyPath: SECURE_KEY,
    certPath: SECURE_CERT,
  }
};
var server = new mosca.Server(settings);
server.on('published', function(packet, client) {
   
    //当客户端有连接发布主题消息
    var topic = packet.topic;
    console.log(packet);
    switch (topic) {
   
        case 'test':
            console.log('收到消息:', packet.payload.toString());
            //MQTT转发主题消息
            //MqttServer.publish({ topic: 'other', payload: 'sssss' });
            break;
        case 'other':
            console
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值