Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
02 快速入门
02 快速入门
文档版本 01
发布日期 2020-01-13
华为技术有限公司
版权所有 © 华为技术有限公司 2020。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明
和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 i
目 录
1 使用前必读.................................................................................................................................. 1
2 接口说明......................................................................................................................................32.1 MQTT CONNECT 连接鉴权................................................................................................................................................... 32.2 设备请求引导消息.................................................................................................................................................................... 42.3 设备接收引导信息.................................................................................................................................................................... 5
3 MQTT 秘钥接入示例................................................................................................................. 6
4 MQTT X509 证书认证接入示例............................................................................................. 11
5 MQTT 注册组接入示例........................................................................................................... 17
6 MQTT 华为云 X509 证书认证接入示例.................................................................................23
7 MQTT 华为云证书注册组接入示例........................................................................................ 29
02 快速入门02 快速入门 目 录
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 ii
1 使用前必读
MQTT 概述
MQTT标准规范参见《mqtt-v3.1.1-os.pdf》。
说明
MQTT的语法和接口细节,请以此标准为准。平台目前只支持MQTTS接入。
MQTT消息分为固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)部分。
固定报头(Fixed header)和可变报头(Variable header)格式的填写直接MQTT标准规范。有效载荷(Payload)部分在PUB消息中可以由应用定义,即设备和设备发放平台之间自己定义。
下面主要介绍CONNECT、SUB和PUB消息格式的填写。
● CONNECT - Client requests a connection to a server有效载荷(Payload)中的主要参数填写,具体参见MQTT CONNECT连接鉴权。
● SUBSCRIBE - Subscribe to named topics有效载荷(Payload)中的主要参数填写:Topic name,填写为设备想要订阅的主题消息,目前填写为设备自己的topic,具体参见Topic说明。
● PUBLISH - Publish message– 可变报头(Variable header):Topic name,设备发往设备发放平台时,为
平台的Topic name,设备接收消息时,为设备的Topic name,具体参见Topic说明。
– 有效载荷(Payload)中的主要参数填写:为完整的数据上报和命令下发的消息内容,目前是一个JSON对象。
Topic 说明● 设备发放平台作为消息接收方时,已默认订阅了相关Topic,设备只要向对应Topic
发送消息,设备发放平台就可以接收。
● 设备作为消息接收方时,需要先订阅相关Topic,这样设备发放平台向对应Topic发送消息时,设备才能接收到。设备需要根据具体实现的业务来决定订阅哪些Topic。
02 快速入门02 快速入门 1 使用前必读
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 1
Topic 消息发送方
(Publisher)
消息接收方
(Subscriber)
说明
$oc/devices/{device_id}/sys/bootstrap/up
设备 设备发放平台
设备向发放服务请求对应设备发放平台的引导信息。
$oc/devices/{device_id}/sys/bootstrap/down
设备发放平台
设备 设备接收发放服务下发的引导信息。
02 快速入门02 快速入门 1 使用前必读
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 2
2 接口说明
2.1 MQTT CONNECT 连接鉴权
接口功能
设备发放平台设备侧支持MQTT协议的connect消息接口,接口规范参考MQTT标准规范,鉴权通过后建立设备与平台间的MQTT连接。
说明
设备发放平台目前只支持MQTTS接入,设备通过connect消息接口跟平台建立MQTT连接时,需要携带TLS证书。TLS证书请点击获取Agent Lite目录下的TLS证书。
参数说明
参数 必选/可选
类型 参数描述
02 快速入门02 快速入门 2 接口说明
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 3
clientId
必选 String(256)
注册组选择非华为云证书场景:
设备clientId由3个部分组成:设备ID、设备身份标识类型、用户标识ID(ScopeID)。通过下划线“_”分隔,设备身份标识类型固定值为0例:5f052ac562369102d42b0fb6_0_ff5bbx7a488f其他场景:
设备clientId由4个部分组成:设备ID、设备身份标识类型、密码签名类型、时间戳。通过下划线“_”分隔,设备身份标识类型固定值为0● 密码签名类型:长度1字节,当前支持2种类型:
– “0”代表HMACSHA256不校验时间戳。
– “1”代表HMACSHA256校验时间戳。
● 时间戳:为设备连接平台时的UTC时间,格式为YYYYMMDDHH,如UTC 时间2018/7/24 17:56:20 则应表示为2018072417。
例:5f052ac562369102d42b0fb6_0_0_2019122614
Username
必选 String(256)
设备ID。
Password
必选 String(256)
Password的值为使用“HMACSHA256”算法以时间戳为秘钥,对secret进行加密后的值。
secret为注册设备时平台返回的secret。当设备认证类型使用秘钥认证接入(SECRET)可填写该字段,证书认证接入(CERTIFICATES)不需填写该字段。
设备通过MQTT协议的connect消息进行鉴权,对于构造clientId的各个部分信息都必须包括进去,平台收到connect消息时,会判断设备的鉴权类型和密码摘要算法。
● 当采用“HMACSHA256”校验时间戳方式时,会先校验消息时间戳与平台时间是否一致,再判断密码是否正确。
● 当采用“HMACSHA256”不校验时间戳方式时,鉴权消息也必须带时间戳,但不检验时间是否准确,仅判断密码是否正确。
connect消息鉴权失败时,平台会返回错误,并自动断开MQTT链路。
2.2 设备请求引导消息
接口功能
设备向发放服务请求对应设备发放平台的引导信息。
Topic
Topic $oc/devices/{device_id}/sys/bootstrap/up
02 快速入门02 快速入门 2 接口说明
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 4
消息发送方 设备
消息接收方 设备发放平台
示例
设备向发放服务发送的payload为空。
2.3 设备接收引导信息
接口功能
设备接收发放服务下发的引导信息。
Topic
Topic $oc/devices/{device_id}/sys/bootstrap/down
消息发送方 设备发放平台
消息接收方 设备
参数说明
参数 必选/可选 类型 描述
address 必选 String 对应设备发放平台的接入地址。
示例设备先订阅Topic后才能收到命令推送,设备接收到的payload: { "address": "10.0.0.1:8883"}
02 快速入门02 快速入门 2 接口说明
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 5
3 MQTT 秘钥接入示例
3.1 终端节点说明
区域名称 区域 终端节点(Endpoint) 端口 协议
华北-北京四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com
8883 MQTTS
3.2 添加策略
添加静态策略,根据关键字发放到指定的IOT HUB。
3.3 注册设备
选择密钥模式注册MQTT设备。
02 快速入门02 快速入门 3 MQTT 秘钥接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 6
3.4 引导设备
MQTT.fx 是目前主流的 MQTT 桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息,本文主要介绍 MQTT.fx 如何与华为设备发放交互。本文以 MQTT.fx 1.7.0 for Windows版本为例。其中设备发放服务MQTT的南向接入地址为:iot-bs.cn-north-4.myhuaweicloud.com。
步骤1 打开 MQTT.fx 下载页面,找到适合的版本下载并安装 MQTT.fx 客户端。
步骤2 打开 MQTT.fx 客户端程序,单击【设置】。
步骤3 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的。
02 快速入门02 快速入门 3 MQTT 秘钥接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 7
步骤4 填写 User Credentials 信息。
说明
其中Username 和Password 参数参考MQTT CONNECT连接鉴权参数说明。
步骤5 选择开启 SSL/TLS,勾选 CA Certificates file,配置相关证书内容。
02 快速入门02 快速入门 3 MQTT 秘钥接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 8
步骤6 完成以上步骤设置后,单击【Apply】和【OK】进行保存,并在配置文件框中选择刚才创建的文件名,单击【Connect】,当右上角圆形图标为绿色时,说明已连接设备发放服务成功,可进行发布和订阅操作。
步骤7 点击【Subscribe】进行订阅,按照设备接收引导信息topic填写对应的topic,并进行订阅。订阅成功如下所示:
步骤8 点击【Publish】进行消息推送,按照设备请求引导信息topic填写对应的topic,并进行消息请求。
02 快速入门02 快速入门 3 MQTT 秘钥接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 9
消息推送成功如下所示,在Subscribe会返回对应设备的设备接入管理服务的地址。
----结束
02 快速入门02 快速入门 3 MQTT 秘钥接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 10
4 MQTT X509 证书认证接入示例
4.1 终端节点说明
区域名称 区域 终端节点(Endpoint) 端口 协议
华北-北京四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com
8883 MQTTS
4.2 上传 CA 证书
4.3 验证 CA 证书
步骤1 为私有秘钥验证证书生成秘钥对。
openssl genrsa -out client.key 2048
步骤2 获取随机验证码。
02 快速入门02 快速入门 4 MQTT X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 11
步骤3 利用此验证码生成证书请求文件CSR
openssl req -new -key client.key -out client.csr
说明
CSR文件的Comman Name为此验证码
步骤4 使用由CA私有密钥前面的CSR创建私有的验证证书
openssl x509 -req -in client.csr -CA server.crt -CAkey server.key -CAcreateserial -out client.crt -days 500 -sha256
步骤5 上传验证证书进行验证
----结束
4.4 添加策略
添加证书策略,发放CA证书到指定的IOT HUB,并且由此CA签发的设备证书都会发放到指定的IOT HUB。
4.5 注册设备
选择X509证书接入的方式注册MQTT设备。
02 快速入门02 快速入门 4 MQTT X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 12
选择X509认证模式,选择对应的CA证书,填写设备证书的hash和设备标识,注册x509认证设备。
4.6 引导设备
MQTT.fx 是目前主流的 MQTT 桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息,本文主要介绍 MQTT.fx 如何与华为设备发放交互。本文以 MQTT.fx 1.7.0 for Windows版本为例。其中设备发放服务MQTT的南向接入地址为:iot-bs.cn-north-4.myhuaweicloud.com。
步骤1 打开 MQTT.fx 下载页面,找到适合的版本下载并安装 MQTT.fx 客户端。
步骤2 打开 MQTT.fx 客户端程序,单击【设置】。
步骤3 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的。
02 快速入门02 快速入门 4 MQTT X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 13
步骤4 填写 User Credentials 信息。
说明
其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。
步骤5 选择开启 SSL/TLS,勾选 CA Certificates file,配置相关证书内容。
02 快速入门02 快速入门 4 MQTT X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 14
说明
第一项为设备发放对应的CA证书。第二项和第三项分别为设备的设备证书和私钥。
步骤6 完成以上步骤设置后,单击【Apply】和【OK】进行保存,并在配置文件框中选择刚才创建的文件名,单击【Connect】,当右上角圆形图标为绿色时,说明已连接设备发放服务成功,可进行发布和订阅操作。
步骤7 点击【Subscribe】进行订阅,按照设备接收引导信息topic填写对应的topic,并进行订阅。订阅成功如下所示:
步骤8 点击【Publish】进行消息推送,按照设备请求引导信息topic填写对应的topic,并进行消息请求。
02 快速入门02 快速入门 4 MQTT X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 15
消息推送成功如下所示,在Subscribe会返回对应设备的设备接入管理服务的地址。
----结束
02 快速入门02 快速入门 4 MQTT X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 16
5 MQTT 注册组接入示例
5.1 终端节点说明
区域名称 区域 终端节点(Endpoint) 端口 协议
华北-北京四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com
8883 MQTTS
5.2 上传 CA 证书
5.3 验证 CA 证书
步骤1 为私有秘钥验证证书生成秘钥对。
openssl genrsa -out client.key 2048
步骤2 获取随机验证码。
02 快速入门02 快速入门 5 MQTT 注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 17
步骤3 利用此验证码生成证书请求文件CSR
openssl req -new -key client.key -out client.csr
说明
CSR文件的Comman Name为此验证码
步骤4 使用由CA私有密钥前面的CSR创建私有的验证证书
openssl x509 -req -in client.csr -CA server.crt -CAkey server.key -CAcreateserial -out client.crt -days 500 -sha256
步骤5 上传验证证书进行验证
----结束
5.4 添加自定义策略
5.5 创建注册组
02 快速入门02 快速入门 5 MQTT 注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 18
5.6 引导设备
MQTT.fx 是目前主流的 MQTT 桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息,本文主要介绍 MQTT.fx 如何与华为设备发放交互。本文以 MQTT.fx 1.7.0 for Windows版本为例。其中设备发放服务MQTT的南向接入地址为:iot-bs.cn-north-4.myhuaweicloud.com。
步骤1 打开 MQTT.fx 下载页面,找到适合的版本下载并安装 MQTT.fx 客户端。
步骤2 打开 MQTT.fx 客户端程序,单击【设置】。
步骤3 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的。
02 快速入门02 快速入门 5 MQTT 注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 19
步骤4 填写 User Credentials 信息。
说明
其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。
步骤5 选择开启 SSL/TLS,勾选 CA Certificates file,配置相关证书内容。
02 快速入门02 快速入门 5 MQTT 注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 20
说明
第一项为设备发放对应的CA证书。第二项和第三项分别为设备的设备证书和私钥。
步骤6 完成以上步骤设置后,单击【Apply】和【OK】进行保存,并在配置文件框中选择刚才创建的文件名,单击【Connect】,当右上角圆形图标为绿色时,说明已连接设备发放服务成功,可进行发布和订阅操作。
步骤7 点击【Subscribe】进行订阅,按照设备接收引导信息topic填写对应的topic,并进行订阅。订阅成功如下所示:
步骤8 点击【Publish】进行消息推送,按照设备请求引导信息topic填写对应的topic,并进行消息请求。
02 快速入门02 快速入门 5 MQTT 注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 21
消息推送成功如下所示,在Subscribe会返回对应设备的设备管理服务的地址。
----结束
02 快速入门02 快速入门 5 MQTT 注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 22
6 MQTT 华为云 X509 证书认证接入示例
6.1 终端节点说明
区域名称 区域 终端节点(Endpoint) 端口 协议
华北-北京四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com
8883 MQTTS
6.2 在云证书管理服务创建根 CA 证书
根据云证书管理服务的指导,创建CA证书
02 快速入门02 快速入门 6 MQTT 华为云 X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 23
6.3 添加策略
采用华为云证书认证的设备,三种策略都支持引导,以”证书策略“为例,在”设备发放“创建对应”华为云证书“的证书策略。
6.4 注册设备
使用华为云证书接入的方式注册MQTT设备。
选择华为云证书认证模式,选择对应的CA证书,填写设备证书名称,注册x509认证设备。
02 快速入门02 快速入门 6 MQTT 华为云 X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 24
6.5 下载设备证书
设备注册成功后,点击设备进入设备详情页面,点击”下载“按钮下载设备证书,并烧录到设备。
6.6 引导设备
MQTT.fx 是目前主流的 MQTT 桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息,本文主要介绍 MQTT.fx 如何与华为设备发放交互。本文以 MQTT.fx 1.7.0 for Windows版本为例。其中设备发放服务MQTT的南向接入地址为:iot-bs.cn-north-4.myhuaweicloud.com。
步骤1 打开 MQTT.fx 下载页面,找到适合的版本下载并安装 MQTT.fx 客户端。
步骤2 打开 MQTT.fx 客户端程序,单击【设置】。
步骤3 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的。
02 快速入门02 快速入门 6 MQTT 华为云 X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 25
步骤4 填写 User Credentials 信息。
说明
其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。
步骤5 选择开启 SSL/TLS,勾选 CA Certificates file,配置相关证书内容。
02 快速入门02 快速入门 6 MQTT 华为云 X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 26
说明
第一项为设备发放对应的CA证书。第二项和第三项分别为设备的设备证书和私钥。
步骤6 完成以上步骤设置后,单击【Apply】和【OK】进行保存,并在配置文件框中选择刚才创建的文件名,单击【Connect】,当右上角圆形图标为绿色时,说明已连接设备发放服务成功,可进行发布和订阅操作。
步骤7 点击【Subscribe】进行订阅,按照设备接收引导信息topic填写对应的topic,并进行订阅。订阅成功如下所示:
步骤8 点击【Publish】进行消息推送,按照设备请求引导信息topic填写对应的topic,并进行消息请求。
02 快速入门02 快速入门 6 MQTT 华为云 X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 27
消息推送成功如下所示,在Subscribe会返回对应设备的设备接入管理服务的地址。
----结束
02 快速入门02 快速入门 6 MQTT 华为云 X509 证书认证接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 28
7 MQTT 华为云证书注册组接入示例
7.1 终端节点说明
区域名称 区域 终端节点(Endpoint) 端口 协议
华北-北京四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com
8883 MQTTS
7.2 在云证书管理服务创建根 CA 证书
根据云证书管理服务的指导,创建CA证书
02 快速入门02 快速入门 7 MQTT 华为云证书注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 29
7.3 添加自定义策略
7.4 创建注册组
7.5 创建设备证书
7.6 下载设备证书
设备证书创建成功后,点击”下载“设备证书和私钥,并烧录到设备。
02 快速入门02 快速入门 7 MQTT 华为云证书注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 30
7.7 引导设备
MQTT.fx 是目前主流的 MQTT 桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息,本文主要介绍 MQTT.fx 如何与华为设备发放交互。本文以 MQTT.fx 1.7.0 for Windows版本为例。其中设备发放服务MQTT的南向接入地址为:iot-bs.cn-north-4.myhuaweicloud.com。
步骤1 打开 MQTT.fx 下载页面,找到适合的版本下载并安装 MQTT.fx 客户端。
步骤2 打开 MQTT.fx 客户端程序,单击【设置】。
步骤3 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的。
步骤4 填写 User Credentials 信息。
02 快速入门02 快速入门 7 MQTT 华为云证书注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 31
说明
其中Username 参考MQTT CONNECT连接鉴权参数说明(无需填写Password)。
步骤5 选择开启 SSL/TLS,勾选 CA Certificates file,配置相关证书内容。
说明
第一项为设备发放对应的CA证书。第二项和第三项分别为设备的设备证书和私钥。
步骤6 完成以上步骤设置后,单击【Apply】和【OK】进行保存,并在配置文件框中选择刚才创建的文件名,单击【Connect】,当右上角圆形图标为绿色时,说明已连接设备发放服务成功,可进行发布和订阅操作。
02 快速入门02 快速入门 7 MQTT 华为云证书注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 32
步骤7 点击【Subscribe】进行订阅,按照设备接收引导信息topic填写对应的topic,并进行订阅。订阅成功如下所示:
步骤8 点击【Publish】进行消息推送,按照设备请求引导信息topic填写对应的topic,并进行消息请求。
消息推送成功如下所示,在Subscribe会返回对应设备的设备接入管理服务的地址。
02 快速入门02 快速入门 7 MQTT 华为云证书注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 33
----结束
02 快速入门02 快速入门 7 MQTT 华为云证书注册组接入示例
文档版本 01 (2020-01-13) 版权所有 © 华为技术有限公司 34