4.5 MQTT 场景--使用华为 SDK 接入设备发放示例
4.5.1 MQTT 密钥设备使用静态策略发放
获取设备发放终端节点
区域名称 区域 终端节点(Endpoint) 端口 协议 华北-北京
四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com 8883 MQTTS
添加静态策略
添加静态策略,根据关键字发放到指定的IoTDA。
注册设备
在设备发放控制台,注册MQTT设备,其中安全模式选择密钥模式。
设备引导
下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。
说明
用IDEA/Eclipse打开SDK代码工程,修改DEMO示例BootstrapSample中的参数,其中deviceId和 secret替换为步骤3中生成的设备ID和密钥即可,bootstrapUri为获取设备发放终端节点对应的终 端节点。
运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的 设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在 线。
设备接入
快速入门 4 设备发放入门
4.5.2 MQTT 注册组静态策略发放示例
制作 CA 证书
步骤1 在浏览器中访问这里,下载并进行安装OpenSSL工具,安装完成后配置环境变量。
步骤2 在 D:\certificates 文件夹下,以管理员身份运行cmd命令行窗口。
步骤3 生成密钥对(server.key):
说明
生成“密钥对”时输入的密码在生成“证书请求文件”、“CA证书”以及“验证证书”时需要 用到,请妥善保存。
openssl genrsa -des3 -out server.key 2048
步骤4 使用密钥对生成证书请求文件:
说明
生成证书请求文件时,要求填写证书唯一标识名称(Distinguished Name,DN)信息,参数说 明如下表1 所示。
表4-5
提示 参数名称 取值样例
Country Name (2 letter
code) []: 国家/地区 CN
State or Province Name
(full name) []: 省/市 GuangDong Locality Name (eg, city)
[]: 城市 ShenZhen
Organization Name (eg,
company) []: 组织机构(或公司名) Huawei Technologies Co., Ltd.
Organizational Unit
Name (eg, section) []: 机构部门 Cloud Dept.
Common Name (eg, fully
qualified host name) []: CA名称(CN) Huawei IoTDP CA Email Address []: 邮箱地址 /
A challenge password []: 证书密码,如您不设置密
码,可以直接回车 /
openssl req -new -key server.key -out server.csr
步骤5 生成CA证书(server.crt):
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
----结束
获取设备发放终端节点
区域名称 区域 终端节点(Endpoint) 端口 协议 华北-北京
四
cn-north-4
iot-bs.cn-north-4.myhuaweicloud.com 8883 MQTTS
上传并验证 CA 证书
openssl genrsa -out client.key 2048
2. 获取随机验证码。
3. 利用此验证码生成证书请求文件CSR。
openssl req -new -key client.key -out client.csr 说明
CSR文件的Common Name (e.g. server FQDN or YOUR name) 需要填写此验证码。
4. 使用由CA私有密钥签名的CSR创建私有的验证证书(client.crt)。
openssl x509 -req -in client.csr -CA server.crt -CAkey server.key -CAcreateserial -out client.crt -days 500 -sha256
说明
生成验证证书用到的“server.crt”和“server.key”这两个文件,为“制作CA证书”中所 生成的两个文件。
设备接入
快速入门 4 设备发放入门
5. 上传验证证书进行验证。
----结束
添加静态策略
“关键字”为注册组名称中的关键字。设备发放时,注册组下的设备的设备名称为
“注册组名称+设备ID”,如果包含设置的关键字,则可按该实例进行发放。
新增注册组
设备引导
步骤1 下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。
说明
用IDEA/Eclipse打开SDK代码工程,修改DEMO示例BootsrapSelfRegSample中的参数。
其中deviceId可以自己随意命名,用一个唯一标识设备身份的ID,也可用设备证书的唯一标识身 份,设备证书使用者的CN。(因为注册组的场景不存在选择产品所以命名需要注意:如果命名字 符串有“_”,那么第一项必须为对应设备接入已经存在的产品ID,如果不包括“_”,那么可以 随意命名)。
ScopeId可以在设备发放页面点击注册组查询。
设备接入
快速入门 4 设备发放入门
说明
bootstrapUri为获取设备发放终端节点对应的终端节点。
keyStore的参数为对应注册组的CA证书签发的设备证书,私钥文件对应的本地目录。如果私钥 不加密,那么不需要填写keyPassword,对应bootstrapClient = new
BootstrapClient(bootstrapUri, deviceId, keyStore, “”, scopeId)。
运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的 设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在 线。
----结束