本方案不在设备上烧录设备证书,而是设备上电联网后,向厂商服务器发起请求,获取设备证书(ProductKey、DeviceName和DeviceSecret)。本文介绍厂商云服务端开发方案。
设备获取设备证书的方案介绍,请参见获取设备证书方案概述。
原理
本方案中,需要部署一个设备证书分发服务器,开发相应的服务端API和设备信息数据库表,用于设备请求获取设备证书。
证书分发服务器收到来自设备的获取证书请求时,调用上述API。该API的业务逻辑为:根据请求中的设备标识查询设备信息数据表,根据查询结果,进行以下后续操作。
没有查到传入的设备标识,则返回设备非法错误。
有对应的设备标识,且已有设备证书,则返回设备证书。
有对应的设备标识,但没有设备证书,则调用物联网平台API RegisterDevice注册设备身份,获取证书后,再发送给设备。
设备获得证书之后,再使用该证书连接阿里云物联网平台。
参与该过程的各个角色的时序图如下所示。
设备需要能自动获取IP地址,并连接您的证书分发服务器。
证书分发服务器由您自行设计实现。
您需要确保设备连接到证书分发服务器的安全性和可靠性。
服务器API设计建议
建议您按以下方法设计该API。
请求参数:
参数
说明
deviceId
设备在您的系统中的唯一标识。自定义,可以是设备MAC或者SN等。
返回参数:
参数
说明
productKey
对应物联网平台颁发的设备证书的ProductKey。
deviceName
对应物联网平台颁发的设备证书的DeviceName。
deviceSecret
对应物联网平台颁发的设备证书的DeviceSecret。
设备信息数据表设计建议
建议您按以下方法设计设备信息数据表。
表格属性:
表格属性 | 建议取值 |
数据表名称 | device_table |
数据生命周期 | -1 |
最大数据版本 | 1 |
数据有效版本偏差 | 86400 |
主键 | deviceId,字符串(String) ,分区键。 |
数据字段:
字段 | 说明 |
deviceId | 设备唯一标识。自定义,可以是设备MAC或者SN等。 |
registerTime | 设备注册时间。 |
activateTime | 设备激活时间。 |
productKey | 对应物联网平台颁发的设备证书的ProductKey。 |
deviceName | 对应物联网平台颁发的设备证书的DeviceName。 |
deviceSecret | 对应物联网平台颁发的设备证书的DeviceSecret。 |
IotId | 物联网平台为该设备颁发的设备ID,该设备在物联网平台上的唯一标识。 |