MQTT 注册组静态策略发放示例
制作CA证书
- 在浏览器中访问这里,下载并进行安装OpenSSL工具,安装完成后配置环境变量。
 - 在 D:\certificates 文件夹下,以管理员身份运行cmd命令行窗口。
 - 生成密钥对(rootCA.key):
    
    
 
     生成“密钥对”时输入的密码在生成“证书签名请求文件”、“CA证书”,“验证证书”以及“设备证书”时需要用到,请妥善保存。
openssl genrsa -des3 -out rootCA.key 2048
 - 使用密钥对生成证书签名请求文件:
    
    
    
表1 证书签名请求文件参数说明 提示
参数名称
取值样例
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 []:
证书密码,如您不设置密码,可以直接回车
/
An optional company name []:
可选公司名称,如您不设置,可以直接回车
/
openssl req -new -key rootCA.key -out rootCA.csr
 - 生成CA证书(rootCA.crt):
    
    
openssl x509 -req -days 50000 -in rootCA.csr -signkey rootCA.key -out rootCA.crt
 
     “-days”后的参数值指定了该证书的有效天数,此处示例为50000天,您可根据实际业务场景和需要进行调整。
 
获取设备发放终端节点
| 
        区域名称  | 
      
        区域  | 
      
        终端节点(Endpoint)  | 
      
        端口  | 
      
        协议  | 
     
|---|---|---|---|---|
| 
        华北-北京四  | 
      
        cn-north-4  | 
      
        iot-bs.cn-north-4.myhuaweicloud.com  | 
      
        8883  | 
      
        MQTTS  | 
     
上传并验证CA证书
- 登录设备发放控制台,进入“证书”界面,单击右上角“上传CA证书”,填写“证书名称”并上传上述“制作CA证书”步骤后生成的“CA证书(rootCA.crt文件)”,单击“确定”。
    
    图1 上传CA证书
     - 验证步骤1中上传的CA证书,只有成功验证证书后该证书方可使用。
    
    
- 为验证证书生成密钥对。
      
openssl genrsa -out verificationCert.key 2048
 - 获取随机验证码。
      图2 上传CA证书完成页
      图3 复制验证码
       - 利用此验证码生成证书签名请求文件CSR。
      
openssl req -new -key verificationCert.key -out verificationCert.csr
 
       CSR文件的Common Name (e.g. server FQDN or YOUR name) 需要填写前一过程中获取到的随机验证码。
 - 使用CA证书、CA证书私钥和CSR文件创建验证证书(verificationCert.crt)。
      
openssl x509 -req -in verificationCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out verificationCert.crt -days 500 -sha256
 
       生成验证证书用到的“rootCA.crt”和“rootCA.key”这两个文件,为“制作CA证书”中所生成的两个文件。
“-days”后的参数值指定了该证书的有效天数,此处示例为500天,您可根据实际业务场景和需要进行调整。
 - 上传验证证书进行验证。
      图4 上传验证证书
       
 - 为验证证书生成密钥对。
      
 
生成设备证书
- 使用OpenSSL工具为设备证书生成密钥对(设备私钥):
    
    
openssl genrsa -out deviceCert.key 2048
 - 使用设备密钥对,生成证书签名请求文件:
    
    
openssl req -new -key deviceCert.key -out deviceCert.csr
表3 证书签名请求文件参数说明 提示
参数名称
取值样例
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 []:
证书密码,如您不设置密码,可以直接回车
/
An optional company name []:
可选公司名称,如您不设置,可以直接回车
/
 - 使用CA证书、CA证书私钥和CSR文件创建设备证书(deviceCert.crt)。
    
    
openssl x509 -req -in deviceCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out deviceCert.crt -days 36500 -sha256
 
     生成设备证书用到的“rootCA.crt”和“rootCA.key”这两个文件,为“制作CA证书”中所生成的两个文件,且需要完成“上传并验证CA证书”。
“-days”后的参数值指定了该证书的有效天数,此处示例为36500天,您可根据实际业务场景和需要进行调整。
 
添加静态策略
“关键字”为注册组名称中的关键字。设备发放时,注册组下的设备的设备名称为“注册组名称+设备ID”,如果包含设置的关键字,则可按该实例进行发放。
  新增注册组
  
  设备引导
- 下载并修改华为SDK示例代码进行设备引导(这里以java sdk代码为示例)。
    
    
 
     用IDEA/Eclipse打开SDK代码工程,修改DEMO示例BootsrapSelfRegSample中的参数。
其中deviceId可以自己随意命名,用一个唯一标识设备身份的ID,也可用设备证书的唯一标识身份,设备证书使用者的CN。(因为注册组的场景不存在选择产品所以命名需要注意:如果命名字符串有“_”,那么第一项必须为对应设备接入已经存在的产品ID,如果不包括“_”,那么可以随意命名)。

ScopeId可以在设备发放页面单击 设备->注册组列表 查询。
图8 查看ScopeId
    
 
     bootstrapUri为获取设备发放终端节点对应的终端节点。
keyStore的参数为对应注册组的CA证书签发的设备证书,私钥文件对应的本地目录。如果私钥不加密,那么不需要填写keyPassword,对应bootstrapClient = new BootstrapClient(bootstrapUri, deviceId, keyStore, “”, scopeId)。
运行DEMO程序,看到如下日志,代表设备发放成功,并且已经收到设备发放下发的设备接入地址。如果程序运行没报错,在对应的设备接入平台可以看到设备,并已在线。
