本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
本文描述使用阿里云物联网无线连接服务的设备接入物联网平台时的优惠申请条件,以及设备接入开发的指引。
优惠说明
目前针对购买了阿里云无线连接服务的企业客户提供以下优惠:
2020年4.1日至2020.12.31日期间,客户单笔购买无线连接服务使用到的物联网卡达到500张,即可申请将设备接入阿里云物联网平台免费使用3个月;
在3个月的免费期间内,若累计购卡达到1万张、并且激活的设备达到1万,接入物联网平台的设备可再免费使用9个月的时间,即累计1年的物联网平台设备免费接入。
申请步骤
客户首先需要开通阿里云账号,若无阿里云账号请进行免费开通。
设备接入开发指引
下面对使用物联网卡接入的设备的开发过程进行简单描述:
创建产品
在物联网平台创建产品。
产品是设备的集合,用于定义这些设备的功能、特性、指标。比如电视机厂商发布了一款新型号的电视,那么这个型号就是产品,而客户购买到的电视机则是这个产品的一个具体设备。
其中:
“连网方式”选择“蜂窝”。
“认证方式”选择“设备密钥”。
创建设备
设备接入物联网平台之前都需要具有身份标识,上面创建产品的时候选择了使用“设备密钥”进行认证,所以需要为每个设备生成设备密钥。
客户可以在控制台创建设备,可以选择创建单个设备、或者批量创建设备:
设备密钥包含以下内容:
ProductKey:产品型号,由物联网平台生成该参数;
DeviceName:设备标识,同一个产品下每个设备的DeviceName不能相同,可以由客户指定也可以让平台生成;
DeviceSecret:设备的共享密钥,由物联网平台创建并且每个设备的DeviceSecret不同。
设备创建之后,可以在控制台选择具体的设备查看其设备密钥,点击下图中的“查看”:
将会跳出设备密钥的查看页面:
对于本优惠而言,我们需要验证设备是通过阿里云物联网卡接入,因此DeviceName请务必使用设备的ICCID。
设备获取设备密钥的方式
设备连接物联网平台时需要使用设备密钥进行设备身份认证,设备可以通过以下方式获取设备证书:
产线烧录
本方式指厂商在产线生产设备时将设备的“设备密钥”烧写到设备的NVRAM/FLASH中,设备上电后从NVRAM/FLASH中将其读出后使用。
本方案需要对产线的流程进行改造,请参考我们的产线烧录建议。
构建云端密钥分发服务
本方式需要客户在云端部署密钥分发服务,该服务预先通过物联网平台提供的API创建好设备密钥,然后设备上电后到密钥分发服务器请求分配设备密钥,请参见云端获取密钥。
动态注册
若客户无法在云端部署密钥分发服务,可以考虑使用动态注册方案从物联网平台获取设备密钥。
动态注册指设备上电后将自己的设备唯一标识(比如MAC地址、SN或者IMEI、ICCID)发送到物联网平台作为DeviceName,然后物联网平台返回该设备的DeviceSecret,从而让设备获取到完整的设备密钥(ProductKey需要预先固化在固件中或烧写到NVRAM/FLASH中)。 在设备与物联网平台的交互中,会使用产品的ProductSecret为通信数据进行签名,ProductSecret对于一个产品的设备而言都是相同的。
由于同一个产品的ProductKey、ProductSecret是相同的,因此对于厂商而言在产线生产设备时只需要将ProductKey、ProductSecret固化到固件中或者烧写到NVRAM/FLASH中,由于烧写内容相同因此产线改动较少,看上去很像“一型一密”。
警告动态注册的安全性比较低,客户请务必将ProductKey、ProductSecret加密之后固化在固件中或NVRAM/FLASH中,避免数据泄漏之后攻击者通过动态注册获取密钥连接物联网平台对客户的业务进行攻击。
为了提高动态注册的安全性,平台对使用动态注册的客户有以下两种要求:
a. 预先上传设备的DeviceName
如果客户能够得知设备的DeviceName(对于本文而言是ICCID),那么可以在控制台批量创建设备时上传ICCID文件到平台作为白名单。
这样即使Productkey和ProductSecret泄漏,攻击者如果不知道设备的DeviceName也无法构造攻击设备连接到物联网平台。
b. 使用“设备取证”服务
如果客户无法预先知道设备的DeviceName(对于本文而言是ICCID),那么可以不上传设备的DeviceName,而让设备直接获取DeviceSecret,此时设备需要集成“设备取证”功能来识别正常设备与伪造的设备。
设备接入
客户可以通过在设备上集成阿里云物联网提供的设备SDK进行设备接入,也可以根据阿里云物联网平台的设备接入规范自主进行设备接入。
阿里云物联网平台目前提供以下编程语言的设备端SDK:
如果客户的设备硬件形态是MCU+模组的方式,如果移植SDK到MCU上,客户需要详细理解SDK之后才能让SDK与模组协作工作,这样会花费较大的精力以及花费较多的时间,所以我们建议根据阿里云物联网平台的接入规范进行接入,可以参见MCU+广域网模组接入建议。
设备消息收发
设备可以通过MQTT、HTTPS将设备数据上报给物联网平台,如果设备需要远程管理、特别是需要从云端主动发送消息给设备,那么只能选择使用MQTT连接物联网平台。
请查看什么是topic了解设备消息的收发。
云端应用程序接收设备消息
请参见服务端订阅了解云端应用程序如何从阿里云物联网平台接收来自设备的消息。
云端应用发送消息到设备
请参见云端SDK参考了解云端应用程序如何管理设备以及发送消息到设备。