从厂商云服务端获取证书

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