MQTT连接阿里云IoT(三)

概述

上一篇文章介绍了如何通过TCP方式让MQTT连接到阿里云IOT,并附带了代码。

设备接入物联网平台之前,需通过身份认证。目前,物联网平台支持使用设备密钥、ID²和X.509证书进行设备身份认证。那么,今天来看一下阿里云IOT身份认证方式的其中一种,设备密钥认证。

设备密钥认证

【官网介绍】
在创建产品时,认证方式选择为设备密钥,设备接入物联网平台时,需使用密钥进行身份认证。

物联网平台使用ProductKey标识产品,DeviceName标识设备。ProductSecret和DeviceSecret分别是产品和设备的密钥。设备证书(ProductKey、DeviceName和DeviceSecret)用于校验设备合法性。认证通过后,方可接入物联网平台。针对不同的使用环境,物联网平台提供了使用密钥认证的三种认证方案。

  • 一机一密:每台设备烧录自己的设备证书(ProductKey、DeviceName和DeviceSecret)。
  • 一型一密:同一产品下设备烧录相同产品证书(ProductKey和ProductSecret)。需开通产品的动态注册功能,设备通过动态注册获取DeviceSecret。
  • 子设备动态注册:网关连接上云后,子设备通过动态注册获取DeviceSecret。

三种方案在易用性和安全性上各有优势,您可以根据设备所需的安全等级和实际的产线条件灵活选择。方案对比,如下表所示。

在这里插入图片描述

简单理解

我们重新梳理下IOT里面的产品和设备的定义,然后结合以上验证方式来说明一遍。要不然光是这些概念还是会有点懵圈。

首先是产品和设备,我们前面的文章有介绍如何创建产品和设备,那么产品如何理解呢。

根据百度百科的介绍:

产品是指做为商品提供给市场 ,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品、无形的服务、组织、观念或它们的组合。

举个例就知道了。
比如,华为Mate30手机,这就是一个产品,那假如说要华为现在要研发一款新手机 Mate50,那这也是一个产品。

那什么是设备呢?
理解产品,设备就不难理解了,设备就是产品对应的真实的物理设备,那mate30是一个产品,产品是唯一的,而设备就是mate30真实的手机,那mate30这个产品对应的设备可能就有几千万台。

这个概念说清楚过后,我们在结合物联网系统来说一下。

物联网中我们有多个不同的产品,比如说 电视、台灯、空调,而每个产品下面会对应很多台设备。当我们在物联网平台创建一个产品后,同时要创建很多台设备,然后将设备证书(ProductKey、DeviceName和DeviceSecret)烧录到真实的设备中去。然后设备启动后就会使用这些信息去请求服务器进行验证,验证成功后才能将设备产生的数据上报给服务器。基本流程就是这样。

所以就回到了我们本文前面提到的设备密钥认证方式,认证方式有三种:一机一密、一型一密、子设备动态注册。

我们上一篇文章中介绍的代码连接服务器,那种方式其实就是一机一密验证,因为我们在平台创建设备后已经知道了ProductKey、DeviceName和DeviceSecret,所以直接将这三个信息用于连接服务器时验证就好了。这种方式的安全性是最高的。

还有一种对应的认证方式是一型一密,它和一机一密最大的区别就在于需要动态去请求DeviceSecret,然后设备使用设备证书再与云端建立连接。

ok,介绍完以上概念,下一篇我们主要介绍一下一型一密的使用方式具体该如何通过Qt的HTTP接口来动态注册。