MQTT X.509证书认证设备使用证书策略发放示例
获取设备发放终端节点
| 区域名称 | 区域 | 终端节点(Endpoint) | 端口 | 协议 | 
|---|---|---|---|---|
| 华北-北京四 | cn-north-4 | iot-bs.cn-north-4.myhuaweicloud.com | 8883 | MQTTS | 
整体流程

制作CA证书
- 在浏览器中访问这里,下载并进行安装OpenSSL工具,安装完成后配置环境变量。
- 在 D:\certificates 文件夹下,以管理员身份运行cmd命令行窗口。
- 生成密钥对(rootCA.key):
    
      生成“密钥对”时输入的密码在生成“证书签名请求文件”、“CA证书”,“验证证书”以及“设备证书”时需要用到,请妥善保存。 openssl genrsa -des3 -out rootCA.key 2048 
- 使用密钥对生成证书签名请求文件:
    
    
    表2 证书签名请求文件参数说明 提示 参数名称 取值样例 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天,您可根据实际业务场景和需要进行调整。 
上传并验证CA证书
- 登录设备发放控制台,进入“证书”界面,单击右上角“上传CA证书”,填写“证书名称”并上传上述“制作CA证书”步骤后生成的“CA证书(rootCA.crt文件)”,单击“确定”。
    
    图1 上传CA证书  
- 验证步骤1中上传的CA证书,只有成功验证证书后该证书方可使用。
    
    - 为验证证书生成密钥对。
      openssl genrsa -out verificationCert.key 2048 
- 获取随机验证码。
      图2 上传CA证书完成页 图3 复制验证码 图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天,您可根据实际业务场景和需要进行调整。 
添加证书策略
添加证书策略,发放CA证书到指定的IoTDA,并且由此CA签发的设备证书都会发放到指定的IoTDA。
 
   
  注册设备
在设备发放控制台,注册MQTT设备,其中安全模式选择X.509认证模式,选择对应的CA证书,填写证书指纹,注册X.509认证设备。
 
   
   
 
   证书指纹是根据证书生成的唯一识别证书的标识。如果支持设备自注册,在设备首次认证时不会去认证设备ID和设备证书的关系。
连接鉴权
MQTT.fx 是目前主流的MQTT桌面客户端,它支持 Windows, Mac, Linux,可以快速验证是否可以与设备发放服务进行连接并发布或订阅消息。
本文主要介绍 MQTT.fx 如何与华为设备发放交互,其中设备发放服务MQTT的南向接入地址请参考获取终端节点。
- 下载 MQTT.fx(默认是64位操作系统,如果是32位操作系统,单击此处下载 MQTT.fx ),安装MQTT.fx工具。
- 打开 MQTT.fx 客户端程序,单击“设置”。
     
- 填写 Connection Profile 相关信息。其中General 可以使用工具默认信息。
    
      其中Broker Address和Broker Port可以参考获取终端节点,Client ID 可以参考MQTT CONNECT连接鉴权参数说明,访问这里填写设备ID(DeviceId)等设备信息,生成连接信息(ClientId、Username、Password)。 
- 填写 User Credentials 信息。
- 选择开启 SSL/TLS,勾选 Self signed certificates,配置相关证书内容。
    
      - CA File为设备发放对应的CA证书。
- Client Certificate File为设备的设备证书。
- Client Key File为设备的私钥。
 
- 完成以上步骤设置后,单击“Apply”和“OK”保存,并在配置文件框中选择刚才创建的文件名,单击“Connect”,当右上角圆形图标为绿色时,说明连接设备发放服务成功,可进行订阅(Subscribe)和消息推送(Publish)操作。
     
接收到引导消息
消息推送成功如下所示,在Subscribe的topic下会返回对应设备的设备接入服务的地址。

后续操作
至此,您已完成了设备发放的流程。设备发放已成功将您的设备【接入IoTDA所需的必要信息】预置到了IoTDA实例中。
如您想要体验物联网平台的更多强大功能,您可通过如下步骤完成对IoTDA的后续操作:
- 取用引导消息中的设备接入地址;
- 单击Disconnect,断开与设备发放的连接;
- 将引导信息中的设备接入地址填入MQTT.fx的MQTT Broker Profile Settings中的Broker Address和Broker Port,建立与设备接入的连接;
- 完成与设备接入的上报数据等业务交互。
您可参考指导:设备接入 IoTDA> 开发指南> 设备侧开发> 使用MQTT Demo接入> 使用MQTT.fx调测中的【上报数据】和【进阶体验】部分。
 
 
   得益于设备发放的预置功能,在参考IoTDA指导过程中,您无需再创建产品和设备。
 
   
    



