
# MQTT 注册组密钥认证静态策略发放示例
#### 获取设备发放终端节点
表1设备发放节点列表 
| 区域名称   | 区域         | 终端节点（Endpoint）                      | 端口   | 协议    |
|:---|:---|:---|:---|:---|
| 华北-北京四 | cn-north-4 | iot-bs.cn-north-4.myhuaweicloud.com | 8883 | MQTTS |
   
#### 场景说明
有些设备可能没有证书，又需要使用设备发放功能。对于此类设备，设备发放提供密钥注册组功能。
![](https://support.huaweicloud.com/qs-iotps/public_sys-resources/note_3.0-zh-cn.png)
密钥认证类型的设备组是一个安全性不完备的方案，建议使用证书作为注册组的认证方式。
每个设备的设备代码应该只包含该设备的相应派生设备密钥。 不要在设备代码中包含你的注册组密钥。 泄露的注册组密钥可能会危及所有使用该密钥进行身份验证的设备的安全。
#### 整体流程
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001480375436.png "点击放大")
#### 添加静态策略
"关键字"为"设备名称"中的关键字。设备发放时，"设备名称"为"注册组名称"+"设备ID"。
使用静态策略的注册组中，若注册"设备名称"中包含"关键字"，则按照"关键字"对应策略指定的区域与应用实例进行发放。
图1创建静态策略   
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001836024129.png "点击放大")
#### 新增注册组
创建注册组。
图2新增注册组   
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001789544630.png "点击放大")
注册组密钥为长度在"32\~128"字节的字节码。在创建密钥注册组时，返回的注册组密钥为"base64编码后的注册组密钥字符串"。
若不指定注册组密钥，则注册组密钥由设备发放服务生成。
若指定注册组密钥，在创建中注册组时需在密钥输入框内填写"指定字节码Base64编码后生成的字符串"。
图3创建密钥注册组   
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000002063459601.png "点击放大")
![](https://support.huaweicloud.com/qs-iotps/public_sys-resources/note_3.0-zh-cn.png)
如果需要下发初始化配置，那么对应在初始设备配置选项中填写对应的JSON字符串，设备发放不理解该字段，只是透传该JSON字符串，由设备理解解析。如果不需要下发该字段则不填
创建完成后会返回注册组密钥，单击复制保存注册组密钥。
图4创建密钥注册组响应   
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000002027340052.png "点击放大")
![](https://support.huaweicloud.com/qs-iotps/public_sys-resources/note_3.0-zh-cn.png)
此处注册设备的设备名称需与[添加静态策略](https://support.huaweicloud.com/qs-iotps/iot_03_0006.html#ZH-CN_TOPIC_0000001193613315__section18919205314919)步骤的策略实例关键字相匹配，方能触发该静态策略。
#### 连接鉴权
MQTT.fx 是目前主流的MQTT桌面客户端，它支持 Windows, Mac, Linux，可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息。
本文主要介绍 MQTT.fx 如何与华为设备发放交互，其中设备发放服务MQTT的南向接入地址请参考[获取终端节点](https://support.huaweicloud.com/qs-iotps/iot_03_0006.html#ZH-CN_TOPIC_0000001193613315__section995782616494)。
1. 下载 [MQTT.fx](https://iotda-document.obs.cn-north-4.myhuaweicloud.com/mqttfx-1.7.1-windows-x64.exe)（默认是64位操作系统，如果是32位操作系统，单击此处下载 [MQTT.fx](https://iotda-document.obs.cn-north-4.myhuaweicloud.com/mqttfx-1.7.1-windows.exe) ），安装MQTT.fx工具。
2. 打开 MQTT.fx 客户端程序，单击"设置"。
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001480833242.png "点击放大")
3. 填写 Connection Profile 相关信息和 General 信息。其中General 信息可以用工具默认的参数配置。
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001531480417.png "点击放大")
4. 填写 User Credentials 信息。 对于设备而言，设备secret的值为使用"HMACSHA256"算法以"设备ID"为密钥，对"注册组密钥"进行加密后的值。
   ![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001480560664.png "点击放大")
   ![](https://support.huaweicloud.com/qs-iotps/public_sys-resources/note_3.0-zh-cn.png)
   其中Username 和Password 参数参考[MQTT CONNECT连接鉴权](https://support.huaweicloud.com/qs-iotps/iot_03_0003.html)参数说明。
   
5. 选择开启 SSL/TLS，勾选CA Certificate file，CA Certificate File指定为物联网平台根证书（请先下载[物联网平台的根证书](https://iodps-file.obs.cn-north-4.myhuaweicloud.com/rootca/composed/huaweicloud-iot-root-ca-list.zip)，解压后，选择其中c或java目录下PEM后缀的文件）的本地路径。
   ![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001531353093.png "点击放大")
   
6. 完成以上步骤后，单击"Apply"和"OK"保存，并在配置文件框中选择刚才创建的文件名，单击"Connect"，当右上角圆形图标为绿色时，说明连接设备发放服务成功，可进行订阅（Subscribe）和消息推送（Publish）操作。
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001480592178.png "点击放大")
#### 引导消息订阅
按照[设备接收引导信息](https://support.huaweicloud.com/qs-iotps/iot_03_0005.html)topic填写对应的topic，单击"Subscribe"进行订阅。订阅成功如下所示：
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001480593550.png "点击放大")
#### 引导请求发布
按照[设备请求引导信息](https://support.huaweicloud.com/qs-iotps/iot_03_0004.html)topic填写对应的topic，单击"Publish"进行消息推送。
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001531512877.png "点击放大")
#### 接收到引导消息
消息推送成功如下所示，在Subscribe的topic下会返回对应设备的设备接入服务的地址以及该设备的设备接入密钥。
![](https://support.huaweicloud.com/qs-iotps/figure/zh-cn_image_0000001480752846.png "点击放大")
#### 后续操作
至此，您已完成了设备发放的流程。设备发放已成功将您的设备【**接入IoTDA** **所需的必要信息**】预置到了IoTDA实例中。
如您想要体验物联网平台的更多强大功能，您可通过如下步骤完成对IoTDA的后续操作：
1. 取用引导消息中的设备接入地址，设备接入密钥；
2. 单击Disconnect，断开与设备发放的连接；
3. 将引导信息中的设备接入地址填入MQTT.fx的MQTT Broker Profile Settings中的Broker Address和Broker Port，建立与设备接入的连接；
4. 完成与设备接入的上报数据等业务交互。
您可参考指导：[设备接入 IoTDA\> 开发指南\> 设备侧开发\> 使用MQTT Demo接入\> 使用MQTT.fx调测](https://support.huaweicloud.com/devg-iothub/iot_01_2127.html#section3)中的【**上报数据** 】和【**进阶体验**】部分。
![](https://support.huaweicloud.com/qs-iotps/public_sys-resources/note_3.0-zh-cn.png)
得益于设备发放的预置功能，在参考IoTDA指导过程中，您无需再创建产品和设备。
