发 帖  
原厂入驻New

物联网云服务:出厂时免烧录设备证书,运行时动态注册【1】

2019-10-25 16:20:52  468 物联网 阿里云 物联网平台 烧录
分享
0
本帖最后由 阿里云AIoT 于 2019-10-25 16:22 编辑

原文地址
一般物联网云服务,都会要求设备烧录证书以做身份的识别和鉴权,本文以阿里云物联网平台为例,介绍免烧录证书的方案。
背景:阿里云物联网平台设备证书(三元组)提供一型一密和一机一密两种方式,以让每个设备有唯一身份标识,但设备产线一般不具备针对设备烧录证书的能力。运行时动态注册方案允许设备固件可以无差别烧录,在设备售卖给消费者手上后,第一次使用时动态注册,然后再与阿里云物联网平台建立网络连接。


涉及到系统交互如下


应用服务器API设计
IotDeviceDynamicRegistration/IotDeviceRegist
入参:

[td]
字段描述
deviceId由mac地址根据规则生成的字符串
productKey三元组productKey



业务逻辑:
  • 根据deviceId查询OTS表,如果查到,返回异常,设备已存在
  • 如果查不到设备,添加设备并初始化registerTime设备注册时间
激活并获取三元组API
IotDeviceDynamicRegistration/IotDeviceActivate
入参:
[td]
字段描述
deviceId由mac地址根据规则生成的字符串

返回数据:
[td]
字段列描述
productKey三元组productKey
deviceName三元组deviceName
deviceSecret三元组deviceSecret
业务逻辑:
  • 根据deviceId查询OTS表,如果查不到设备,返回设备非法
  • 如果有设备,有三元组,直接返回三元组
  • 如果有设备,无三元组,去IoT动态注册设备,存储三元组,并返回三元组
表格存储OTS库设计华东2 实例:IoTDevicesTable
公网endpoint https://IoTDevicesTable.cn-shanghai.ots.aliyuncs.com
  1. 数据表名称:device_table
  2. 数据生命周期:-1
  3. 最大数据版本:1
  4. 数据有效版本偏差:86400
  5. 主键: deviceId (STRING) (分片键)
复制代码
[tr][/tr]
[td]
字段列描述
deviceId由mac地址根据规则生成的字符串主键
registerTime设备注册时间
activateTime设备激活时间
productKey三元组productKey(设备所属产品)
deviceName三元组deviceName
deviceSecret三元组deviceSecret
IotIdIoT平台为该设备颁发的设备ID

IoT设备动态注册POP APIRegisterDevice API文档 https://help.aliyun.com/document_detail/69470.html
Java调用阿里云POP API示例 https://yuque.com/wongxming/iot-tech/upqoog
请求参数
[td]
名称类型是否必需描述
ActionString要执行的操作,取值:RegisterDevice。
ProductKeyString指定要为其注册设备的产品的Key。
DeviceNameString为要注册的设备命名。设备名称应包含4-32个字符
返回参数
[td]
名称类型描述
RequestIdString阿里云为该请求生成的唯一标识符。
SuccessBoolean是否调用成功。ture表示调用成功,false表示调用失败。
ErrorMessageString调用失败时,返回的出错信息。
DataDeviceInfo调用成功时,返回注册的设备信息。详情参见DeviceInfo
[td]
DeviceInfo 名称类型描述
ProductKeyString设备隶属的产品Key。
DeviceNameString设备名称。
DeviceSecretString设备密钥。
IotIdStringIoT平台为该设备颁发的设备ID,作为该设备的唯一标识符。
  1. {
  2.     "RequestId":"57b144cf-09fc-4916-a272-a62902d5b207",
  3.     "Success": true,
  4.     "Data": {
  5.         "DeviceName": "CqXL5h5ysRTA4NxjABjj",
  6.         "ProductKey": "a1ysRTA4N0",
  7.         "DeviceSecret": "tXHf4ezGEHcwdyMwoCDHGBmk9a",
  8.         "IotId": "CqXL5h5ysRTA4NxjABjj0010fa"
  9.     }
  10. }
复制代码
这样我们设备激活时,先访问企业服务器业务API,获取IoT平台的三元组身份后,发起MQTT的长连接建立,最终实现设备上云的目的。


王栋春 2019-10-25 16:27:42
围观一下      
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表