- 概述
- 基本概念">基本概念
- 准备工作">准备工作
- 产线烧录流程">产线烧录流程
- FAQ">FAQ
概述
本文主要介绍阿里云Link IoT Edge的产线烧录流程,帮助开发者快速完成批量生产和产线激活。
基本概念
为保障设备安全,阿里云物联网平台为设备颁发证书,包括产品证书(ProductKey和ProductSecret)与设备证书(DeviceName和DeviceSecret)。其中,设备证书与同产品型号(ProductKey)的真实设备一一对应,以确保设备的唯一性。设备通过协议接入阿里云之前,需依据不同的认证方案,使用产品证书和设备证书计算签名,通过云端认证后,方可接入物联网平台。
注意以下几点:
- 产品与设备的概念: 产品是设备的集合,通常是一组具有相同功能定义的设备集合。例如:产品指同一个型号的产品,设备就是该型号下的某个具体设备。
- Link IoT Edge 默认创建的设备类型是网关。
- 为便于描述,下文将ProductKey, ProductSecret合并称为二元组; 将ProductKey, DeviceName, DeviceSecret合并称为三元组。
Link IoT Edge 支持以下 2 种认证方案,分别是:
两种方案在易用性和安全性上各有差异,您可以根据设备所需的安全等级和实际的产线条件灵活选择,方案对比如下图所示。
对比项 | 一机一密 | 一型一密 |
---|---|---|
产线烧录信息 | ProductKey、DeviceName、DeviceSecret | ProductKey、ProductSecret |
云端是否需要开启动态注册 | 无需开启,默认支持。 | 需打开动态注册开关 |
产线烧录要求 | 逐一烧录设备证书且需确保设备证书的安全存储 | 批量烧录相同的产品证书且需确保产品证书的安全存储 |
安全性 | 较高 | 一般 |
推荐指数 | ★★★★★ | ★★★ |
准备工作
1. 在物联网平台创建产品
无论使用何种烧录方式,第一步均为在物联网控制台上创建产品。
创建产品的详细步骤,请参考: 创建产品
创建完产品后,我们接下来可以点击设备管理以进行下一步操作。
如果接下里采用一型一密方案,请手动开启动态注册开关:
需要注意以下几点:
- 产品所属分类,请选择 边缘计算/边缘网关 .
- 节点类型,请选择 网关 .
- 创建完产品,即可生成一型一密所需要的二元组信息(即ProductKey/ProductSecret).
2. 在物联网平台创建设备
在第 1 步完成后,可以看到如下设备管理页面:
用户可以点击添加设备进行添加单个设备,详细步骤请参考: 创建单个设备
也可以点击批量添加进行添加多个设备,详细步骤请参考: 批量添加设备
注意以下几点:
- 添加多个设备时,注意模版的编码格式必须为UTF-8。
- 这里获取的设备证书,包含了一机一密所需要的三元组信息(ProductKey/DeviceName/DeviceSecret).
- 用户需要妥善保管,谨防丢失三元组信息,否者可能会设备会出现联云异常。
3. 获取产线烧录工具
在一型一密方案里,开发者需要将ProductKey, ProductSecret二元组信息烧录到设备上,而设备实际联网激活时,需要使用ProductKey, DeviceName, DeviceSecret三元组才能激活成功。为便于开发者使用,阿里云IoT提供源码及二进制产线烧录工具,该工具支持用户输入二元组信息输出实际的三元组信息,设备用该三元组信息即可完成激活。
用法介绍如下:
运行工具,命令后面跟二元组和DeviceName信息:
$/linkedge/gateway/build/bin/tool_generate_3triple ProductKey DeviceName ProductSecret
返回结果:
$DeviceInfo: ProductKey DeviceName DeviceSecret
注意一下几项:
- 产线烧录工具仅在一型一密方案里使用。
- 请邮件至 link-iot-edge-cert@list.alibaba-inc.com 索取工具和源码以进行二次开发。
- 用户也可以基于LinkKit SDK自行实现该逻辑,Sample Code请参考: LinkKit Sample
- 一型一密方案里,一个设备仅只能通过二元组获取一次三元组信息,故开发者需要将烧录工具获取的三元组信息存储到掉电/重置不丢失的Flash安全存储区。
4. 编写引导程序
无论一型一密还是一机一密,开发者均需要自行开发引导程序以为Link IoT Edge配置设备三元组信息。该引导程序逻辑大体为:
需要注意以下几点:
- 引导程序必须开机启动,获取三元组信息后,需要做简单的合法性校验,比如是否为空,长度是否符合要求(ProductKey长度11位,ProductSecret长度32位)等。
产线烧录流程
一机一密
一机一密认证方法,即预先为每个设备烧录其唯一的设备证书(ProductKey、DeviceName和DeviceSecret)。当设备与物联网平台建立连接时,物联网平台对其携带的设备证书信息进行认证。详细介绍请参考: 一机一密
需要注意以下几点:
- 阿里云物联网平台支持批量生成设备证书: 批量创建设备的方法
- 设备证书请谨慎保管确保安全存储,一旦泄露,设备可能会被他人抢占,导致设备无法连接到云端。
整体流程
1. 创建产品
2. 创建设备
3. 三元组烧录
将设备证书信息烧录至设备中。 烧录设备证书信息操作步骤如下:
- 将包含准备工作4中引导程序的文件系统烧录到设备的某一分区。
- 将步骤2中获取的任意一个设备三元组信息,烧录到设备的其它分区,确保安全存储。
4. 设备联网
为设备插上网线,开机后确保设备可以访问公网。
在设备上执行:
$ping iot-as-mqtt.cn-shanghai.aliyuncs.com
确保外部网络ok。
在设备上执行:$ping 127.0.0.1
确保内部网络ok。
确保开机自动运行准备工作4中介绍的引导程序,用来将三元组信息传递给Link IoT Edge边缘计算。
在设备上执行:$/linkedge/gateway/build/scripts/iot_gateway_status.sh
确保Link IoT Edge正确启动。
5. 云端查看
刷新步骤2中设备详情页,如果发现设备在线状态由未激活变成在线,说明这个设备烧录成功。
一型一密
一型一密安全认证方式,即为同一产品型号下所有设备烧录相同固件(固件中写入产品证书,即ProductKey和ProductSecret)。预先在物联网平台上,导入DeviceName,开启动态注册开关,保存产品证书。设备基于产品证书发送激活请求时,物联网平台根据产品证书进行认证。认证通过,物联网平台下发该设备对应的DeviceSecret,设备下次联网需要使用设备三元组,而不能是产品证书了。详细介绍,请参考: 一型一密
特别说明:
- 采用一型一密方式认证,设备烧录相同固件,存在产品证书泄露风险。您可以在产品详情页面,手动关闭动态注册开关,拒绝新设备的认证请求。
- 一型一密认证方式用于获取设备的DeviceSecret。DeviceSecret仅下发一次,设备端需保存该DeviceSecret,用于后续登录上线。设备复位后,请勿清除设备三元组信息,否者需要在云端删除该设备后方能重新联云。
整体流程
1. 创建产品
2. 打开动态注册开关
请参考准备工作章节1。
一些说明:
- 若设备发出激活请求时,系统校验发现该开关未开启,将拒绝新设备的动态激活请求。已激活设备不受影响。
- 建议所有设备完成激活后,关闭动态注册开关。
2. 创建设备
3. 二元组烧录
将产品证书信息烧录至设备中。 烧录产品证书信息操作步骤如下:
- 将包含准备工作中烧录工具和引导程序的文件系统烧录到设备的某一分区。
- 将上一步骤中获取的任意一个产品证书信息,烧录到设备的其它分区,确保安全存储。
- 运行烧录工具,通过二元组获取设备三元组信息:
$/linkedge/gateway/build/bin/tool_generate_3triple ProductKey DeviceName ProductSecret
- 将设备三元组信息存储到设备的其它分区,确保安全存储。
4. 设备联网
为设备插上网线,开机后确保设备可以访问公网。
在设备上执行:
$ping iot-as-mqtt.cn-shanghai.aliyuncs.com
确保外部网络ok。
在设备上执行:$ping 127.0.0.1
确保内部网络ok。
确保开机自动运行准备工作中介绍的引导程序,用来将三元组信息传递给Link IoT Edge边缘计算。
在设备上执行:$/linkedge/gateway/build/scripts/iot_gateway_status.sh
确保Link IoT Edge正确启动。
5. 云端查看
刷新设备详情页,如果发现设备在线状态由未激活变成在线,说明这个设备烧录成功。
FAQ
- 一型一密方案获取三元组失败怎么办?
应用程序获取三元组成功后,一定要妥善保存到设备的安全存储区域,谨防丢失。若获取三元组失败,需要在物联网平台上,手动删除该设备(需要短信验证码)后,方能重新获取。详情请参考: 一型一密