本方案不在设备上烧录设备证书,而是设备上电联网后,向您的服务器发起请求,获取设备证书(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,该设备在物联网平台上的唯一标识。