CN110881041A - 一种连接方法、mqtt客户端和mqtt服务端 - Google Patents

一种连接方法、mqtt客户端和mqtt服务端 Download PDF

Info

Publication number
CN110881041A
CN110881041A CN201911192732.4A CN201911192732A CN110881041A CN 110881041 A CN110881041 A CN 110881041A CN 201911192732 A CN201911192732 A CN 201911192732A CN 110881041 A CN110881041 A CN 110881041A
Authority
CN
China
Prior art keywords
server
client
mqtt
socket connection
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201911192732.4A
Other languages
English (en)
Inventor
陈锦亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Tuya Information Technology Co Ltd
Original Assignee
Hangzhou Tuya Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Tuya Information Technology Co Ltd filed Critical Hangzhou Tuya Information Technology Co Ltd
Priority to CN201911192732.4A priority Critical patent/CN110881041A/zh
Publication of CN110881041A publication Critical patent/CN110881041A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种连接方法,包括以下步骤:用户通过所述客户端向所述服务端发送psk握手认证信息进行握手认证;认证成功后,所述服务端向所述客户端发送服务端交换秘钥;所述客户端根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;所述服务端接收并存储所述socket连接信息,完成所述客户端与所述服务端的连接。在本发明的技术方案中,在java bouncycastle第三方库中已实现http协议的psk连接认证方式的基础上,然后通过修改MQTT Paho库中建立socket连接的源码来实现的,连接成功后即可进行消息发布和订阅的相关测试。

Description

一种连接方法、MQTT客户端和MQTT服务端
技术领域
本发明涉及物联网通信领域,尤其涉及一种MQTT的客户端与服务端的连接方法、MQTT客户端和MQTT服务端。
背景技术
1)psk是一种对称算法的秘钥交换和认证方式,MQTT上改用了这种认证方式。那么在MQTT的测试过程中,就需要先实现java应用和MQTT服务器之间的连接。
2)现有的各种第三方库中只提供了http协议建立psk的认证方式,并且没有可扩展的接口。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明的目的在于提供一种MQTT的客户端与服务端的连接方法、MQTT客户端和MQTT服务端,其能够在MQTT采用psk认证方式后,为了能够进行自动化测试,实现了在Java MQTT客户端和MQTT broker之间建立psk连接。
为实现上述目的,本发明第一方面的技术方案提供了一种MQTT的客户端与服务端的连接方法,包括以下步骤:
用户通过所述客户端向所述服务端发送psk握手认证信息进行握手认证;
认证成功后,所述服务端向所述客户端发送服务端交换秘钥;
所述客户端根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;
所述服务端接收并存储所述socket连接信息,完成所述客户端与所述服务端的连接。
该技术方案是在java bouncycastle第三方库中已实现http协议的psk连接认证方式的基础上,然后通过修改MQTT Paho库中建立socket连接的源码来实现的,连接成功后即可进行消息发布和订阅的相关测试,工作人员不需要编写大量的代码,只需下载MQTTPaho库源码,修改其建立socket连接部分的代码:在建立连接之前先进行psk认证即可实现上述功能,降低了编写人员的工作量,且易于实现。
本发明第二方面的技术方案提供了一种MQTT客户端,包括:客户端Psk认证模块,被设置为用于向所述服务端发送psk握手认证信息进行握手认证;Socket连接模块,被设置为用于根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;客户端连接确认模块,被设置为用于确认是否与所述服务端完成连接。
该MQTT客户端是在java bouncycastle第三方库中已实现http协议的psk连接认证方式的基础上,然后通过修改MQTT Paho库中建立socket连接的源码来实现的,连接成功后即可进行消息发布和订阅的相关测试,工作人员不需要编写大量的代码,只需下载MQTTPaho库源码,修改其建立socket连接部分的代码:在建立连接之前先进行psk认证即可实现上述功能,降低了编写人员的工作量,且易于实现。
本发明第三方面的技术方案提供了一种MQTT服务端,包括:服务端Psk认证模块,被设置为用于生成服务端交换秘钥,并发送至客户端;服务端连接确认模块,被设置为用于确认是否与所述客户端完成连接。
在上述任一技术方案中,优选地,所述socket连接信息包括用户名、密码、服务器URI、topic和客户端id中的至少一种。
在上述任一技术方案中,优选地,所述psk握手认证信息和所述服务端交换秘钥为固定字符串。
在上述任一技术方案中,优选地,所述socket连接信息包括ip信息和接口信息。
在上述任一技术方案中,优选地,所述客户端为基于mqtt paho库源码编写的客户端。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明实施例所涉及连接方法的原理框图;
图2示出了本发明实施例所涉及连接方法的流程框图;
图3示出了本发明实施例所涉及MQTT客户端的结构框图;
图4示出了本发明实施例所涉及MQTT服务端的结构框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
下面参照图1至图4描述根据本发明一些实施例的MQTT的客户端与服务端的连接方法、MQTT客户端和MQTT服务端。
该技术方案是在java bouncycastle第三方库中已实现http协议的psk连接认证方式的基础上,然后通过修改MQTT Paho库中建立socket连接的源码来实现的。在java、python的第三方源码库中均未发现实现java类库org.eclipse.paho完成mqtt的tls和ssl连接的基础上,增加psk认证的mqtt连接方式的代码,需要在创建socket的地方修改源码;另外目前已实现的是在http协议上建立tls-psk连接,但并未实现mqtt协议的。
如图1和图2所示,按照本发明一个实施例的MQTT的客户端与服务端的连接方法,包括以下步骤:
S10,用户通过所述客户端向所述服务端发送psk握手认证信息进行握手认证;
S20,认证成功后,所述服务端向所述客户端发送服务端交换秘钥;
S30,所述客户端根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;
S40,所述服务端接收并存储所述socket连接信息,完成所述客户端与所述服务端的连接。
在该实施例中,在MQTT的客户端与服务端通过socket的方式进建立连接之前先进行psk认证,首先发送psk握手认证信息pskIdentity(client key exchange客户端交换密钥,本实施例是一个固定值)给服务端进行握手认证,本次握手认证成功后服务端会返回一个psk identity_hint(server key exchange服务端交换秘钥值)的字符串,服务端和客户端交换秘钥认证成功后,再通过socket的方式进行连接。
如图3所示,按照本发明另一个实施例的MQTT客户端10,包括:
客户端Psk认证模块11,被设置为用于向所述服务端发送psk握手认证信息进行握手认证;
Socket连接模块12,被设置为用于根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;
客户端连接确认模块13,被设置为用于确认是否与所述服务端完成连接。
该MQTT客户端是在java bouncycastle第三方库中已实现http协议的psk连接认证方式的基础上,然后通过修改MQTT Paho库中建立socket连接的源码来实现的,连接成功后即可进行消息发布和订阅的相关测试,工作人员不需要编写大量的代码,只需下载MQTTPaho库源码,修改其建立socket连接部分的代码:在建立连接之前先进行psk认证即可实现上述功能,降低了编写人员的工作量,且易于实现。
如图4所示,按照本发明另一个实施例的MQTT服务端20,包括:
服务端Psk认证模块21,被设置为用于生成服务端交换秘钥,并发送至客户端;
服务端连接确认模块22,被设置为用于确认是否与所述客户端完成连接。
在该实施例中,在MQTT客户端与MQTT服务端建立连接的过程中,新建一个TlsClientProtocol、一个psk认证客户端TlsPskClient和一个新建socket,具体步骤如下:首先下载mqtt paho库源码,然后修改mqtt paho库源码中建立socket连接部分的代码:在建立连接之前先进行psk认证;TlsClientProtocol是在原有的socket之上加一个psk握手认证:首先发送pskIdentity(client key exchange客户端交换密钥,本案例是一个固定值)给服务器进行握手认证,本次握手认证成功后服务器会返回一个psk_identity_hint(server key exchange服务端交换秘钥值)字符串;服务端和客户端交换秘钥认证成功后,再通过socket的方式进行连接;将代码由建立socket连接部分的代码中的Socket.connect()改为TlsClientProtocol.connect();连接成功后即可进行消息发布和订阅的相关测试。
在上述任一实施例中,优选地,所述socket连接信息包括用户名、密码、服务器URI、topic和客户端id中的至少一种。
在上述任一实施例中,优选地,所述psk握手认证信息和所述服务端交换秘钥为固定字符串。
在上述任一实施例中,优选地,所述socket连接信息包括ip信息和接口信息。
在上述任一实施例中,优选地,所述客户端为基于mqtt paho库源码编写的客户端。
本发明提供的连接方法、MQTT客户端和MQTT服务端与现有技术相比具有如下优点:该MQTT客户端是在java bouncycastle第三方库中已实现http协议的psk连接认证方式的基础上,然后通过修改MQTT Paho库中建立socket连接的源码来实现的,连接成功后即可进行消息发布和订阅的相关测试,工作人员不需要编写大量的代码,只需下载MQTT Paho库源码,修改其建立socket连接部分的代码:在建立连接之前先进行psk认证即可实现上述功能,降低了编写人员的工作量,且易于实现。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (9)

1.一种MQTT的客户端与服务端的连接方法,其特征在于,包括以下步骤:
用户通过所述客户端向所述服务端发送psk握手认证信息进行握手认证;
认证成功后,所述服务端向所述客户端发送服务端交换秘钥;
所述客户端根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;
所述服务端接收并存储所述socket连接信息,完成所述客户端与所述服务端的连接。
2.根据权利要求1所述的连接方法,其特征在于:所述socket连接信息包括用户名、密码、服务器URI、topic和客户端id中的至少一种。
3.根据权利要求1或2所述的连接方法,其特征在于:所述psk握手认证信息和所述服务端交换秘钥为固定字符串。
4.根据权利要求1或2所述的连接方法,其特征在于:所述socket连接信息包括ip信息和接口信息。
5.根据权利要求1或2所述的连接方法,其特征在于:所述客户端为基于mqtt paho库源码编写的客户端。
6.一种MQTT客户端,其特征在于,包括:
客户端Psk认证模块,被设置为用于向所述服务端发送psk握手认证信息进行握手认证;
Socket连接模块,被设置为用于根据所述服务端交换秘钥生成socket连接信息,并发送至所述服务端;
客户端连接确认模块,被设置为用于确认是否与所述服务端完成连接。
7.根据权利要求6所述的MQTT客户端,其特征在于:所述socket连接信息包括用户名、密码、服务器URI、topic和客户端id中的至少一种;和/或
所述psk握手认证信息为固定字符串;和/或
所述socket连接信息包括ip信息和接口信息。
8.根据权利要求6所述的与MQTT客户端,其特征在于:所述MQTT客户端为基于mqttpaho库源码编写的客户端。
9.一种MQTT服务端,其特征在于,包括:
服务端Psk认证模块,被设置为用于生成服务端交换秘钥,并发送至客户端;
服务端连接确认模块,被设置为用于确认是否与所述客户端完成连接。
CN201911192732.4A 2019-11-28 2019-11-28 一种连接方法、mqtt客户端和mqtt服务端 Pending CN110881041A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911192732.4A CN110881041A (zh) 2019-11-28 2019-11-28 一种连接方法、mqtt客户端和mqtt服务端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911192732.4A CN110881041A (zh) 2019-11-28 2019-11-28 一种连接方法、mqtt客户端和mqtt服务端

Publications (1)

Publication Number Publication Date
CN110881041A true CN110881041A (zh) 2020-03-13

Family

ID=69730305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911192732.4A Pending CN110881041A (zh) 2019-11-28 2019-11-28 一种连接方法、mqtt客户端和mqtt服务端

Country Status (1)

Country Link
CN (1) CN110881041A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905454A (zh) * 2021-02-04 2021-06-04 郑州信大捷安信息技术股份有限公司 一种mqtt服务测试***和方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105530238A (zh) * 2014-10-20 2016-04-27 塔塔咨询服务有限公司 用于安全对话建立和数据的加密交换的计算机实现***和方法
US20160301695A1 (en) * 2015-04-07 2016-10-13 Tyco Fire & Security Gmbh Machine-to-Machine and Machine to Cloud End-to-End Authentication and Security
US20160366111A1 (en) * 2015-06-09 2016-12-15 Intel Corporation System, Apparatus and Method for Managing Lifecycle of Secure Publish-Subscribe System
CN108282396A (zh) * 2018-02-13 2018-07-13 湖南快乐阳光互动娱乐传媒有限公司 一种im集群中的多级消息广播方法及***
CN108599939A (zh) * 2018-04-25 2018-09-28 新华三技术有限公司 一种认证方法和装置
CN109150703A (zh) * 2018-08-23 2019-01-04 北方工业大学 一种工业物联网智能云网关及其通信方法
CN109347809A (zh) * 2018-09-25 2019-02-15 北京计算机技术及应用研究所 一种面向自主可控环境下的应用虚拟化安全通信方法
US20190156019A1 (en) * 2017-11-22 2019-05-23 Aeris Communications, Inc. Secure authentication of devices for internet of things
CN109905409A (zh) * 2019-04-10 2019-06-18 上海上实龙创智慧能源科技股份有限公司 基于Socket.IO的物联网网关实时双向通信***

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105530238A (zh) * 2014-10-20 2016-04-27 塔塔咨询服务有限公司 用于安全对话建立和数据的加密交换的计算机实现***和方法
US20160301695A1 (en) * 2015-04-07 2016-10-13 Tyco Fire & Security Gmbh Machine-to-Machine and Machine to Cloud End-to-End Authentication and Security
US20160366111A1 (en) * 2015-06-09 2016-12-15 Intel Corporation System, Apparatus and Method for Managing Lifecycle of Secure Publish-Subscribe System
US20190156019A1 (en) * 2017-11-22 2019-05-23 Aeris Communications, Inc. Secure authentication of devices for internet of things
CN108282396A (zh) * 2018-02-13 2018-07-13 湖南快乐阳光互动娱乐传媒有限公司 一种im集群中的多级消息广播方法及***
CN108599939A (zh) * 2018-04-25 2018-09-28 新华三技术有限公司 一种认证方法和装置
CN109150703A (zh) * 2018-08-23 2019-01-04 北方工业大学 一种工业物联网智能云网关及其通信方法
CN109347809A (zh) * 2018-09-25 2019-02-15 北京计算机技术及应用研究所 一种面向自主可控环境下的应用虚拟化安全通信方法
CN109905409A (zh) * 2019-04-10 2019-06-18 上海上实龙创智慧能源科技股份有限公司 基于Socket.IO的物联网网关实时双向通信***

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
MBSE WITH 火龙果工程: "MQTT协议从服务端到客户端详解", 《MBSE WITH 火龙果工程 HTTP://WWW.UML.ORG.CN/XJS/2018041744.ASP》 *
PALMIERI ANDREA: "MQTTSA: A Tool for Automatically Assisting the Secure Deployments of MQTT Brokers", 《2019 IEEE WORLD CONGRESS ON SERVICES (SERVICES)》 *
SHIN SEONGHAN和KOBARA KAZUKUNI: "A Secure MQTT Framework from PUF-based Key Establishment", 《2017 INTERNATIONAL CONFERENCE ON COMPUTATIONAL SCIENCE AND COMPUTATIONAL INTELLIGENCE (CSCI)》 *
赤云: "1.MQTT协议介绍", 《CSDN HTTPS://BLOG.CSDN.NET/U011124985/ARTICLE/DETAILS/80829246》 *
长安快马: "MQTT和paho(二)socket", 《BBSMAX HTTPS://WWW.BBSMAX.COM/A/KE5JK2Y7DR/》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112905454A (zh) * 2021-02-04 2021-06-04 郑州信大捷安信息技术股份有限公司 一种mqtt服务测试***和方法
CN112905454B (zh) * 2021-02-04 2022-04-08 郑州信大捷安信息技术股份有限公司 一种mqtt服务测试***和方法

Similar Documents

Publication Publication Date Title
US7281128B2 (en) One pass security
CN106209726B (zh) 一种移动应用单点登录方法及装置
CN109547567B (zh) 代理连接方法和装置
CN110764807B (zh) 一种升级方法、***、服务器及终端设备
CN101567893A (zh) 一种实现在web应用中文件上传的方法及***
CN105828329B (zh) 移动终端认证管理方法
CN103532982A (zh) 基于可穿戴设备授权的方法、装置和***
CN111062023B (zh) 多应用***实现单点登录的方法及装置
CN113110864B (zh) 应用程序更新方法、装置及存储介质
CN112800411A (zh) 支持多协议、多方式的安全可靠身份认证方法及装置
CN105791249A (zh) 一种第三方应用处理方法、装置以及***
US10291718B2 (en) Method and apparatus for implementing communication from web page to client
CN104767614A (zh) 一种信息认证方法及装置
CN110881041A (zh) 一种连接方法、mqtt客户端和mqtt服务端
CN105577657A (zh) 一种ssl/tls算法套件的扩展方法
CN104823410A (zh) 参数设定***
CN106899542B (zh) 安全接入方法、装置及***
CN115134154B (zh) 认证方法、装置、远程控制车辆的方法及***
CN106909505B (zh) 基于java的服务器操作***的远程测试方法及装置
CN114338224B (zh) 一种智能硬件跨平台控制方法及***
CN114158046B (zh) 一键登录业务的实现方法和装置
CN114374454A (zh) 一种基于ssh的应急广播设备远程维护方法、设备及介质
CN106802832B (zh) Jenkins节点状态管理方法及装置
CN110830420A (zh) 验证短信验证码的方法及***
CN111064571B (zh) 一种通信终端、服务器及动态更新预共享密钥的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20200313

RJ01 Rejection of invention patent application after publication