阅读232 返回首页    go 阿里云 go 技术社区[云栖]


设备认证__设备基于MQTT接入_设备端接入手册_阿里云物联网套件-阿里云

注意: 认证需要的参数可以在 iot.console.aliyun.com ,获取产品证书和设备证书 productKeyproductSecretdeviceNamedeviceSecret 详细请参考控制台使用手册中的创建产品添加设备

设备获取服务器的公钥证书以及接入服务器的ip地址等信息

  • 设备授权认证。发送一个GET/POST请求到https://iot.channel.aliyun.com/iot/auth, 参数如下:

    参数名 是否必传 描述
    deviceName 必须 用户注册设备自定义的名称,简称设备名称, 例如:b15f5e5063064fffaccc1e56ad59c29
    productKey 必须 用户在阿里云IoT控制台上创建的产品的productKey, 例如: 12345
    sign 必须 签名参数计算的规则如下:
    1. 将所有提交给服务器的参数(sign除外), 按照字母顺序排序, 然后将参数值依次拼接起来. 例如:deviceNameb15f5e5063064fffaccc1e56ad59c29productKey123456signMethodMD5... 假定变量名content
    2. 然后在对这个拼接之后的值(content)进行Hmac签名, 加密使用的key = productSecret+deviceSecret.
    3. 得到结果转16进制字符串并转大写 例如:DF2F6A209E06D25FA154DBE9771ED987
    4. 如果使用MD5,sign=md5(productSecret+content+deviceSecret),最后转大写
    signMethod 可选 签名算法,HmacMD5(默认) 或 HmacSHA1 或 MD5
    resFlag 可选 返回结果类型,默认all,可选 cert:只返回证书,ip:只返回数据服务器地址
    time 可选 时间戳, yyyy-MM-dd hh:mm:ss 格式,用于混淆加密结果,使得每次签名不一样
  • 服务器返回json结构:

{“servers”:”8.8.8.8:8080|8001”,”pubkey”:”pem key经过base64的字符串”,”pkVersion”:”1.0”,”deviceId”:”设备对应阿里云的全局设备id”,”success”:true,”sign”:”服务器签名”}

  1. 获得到的公钥证书需要base64decode,结果是一个pem格式的字符串(x509证书),其中pkVersion是当前证书版本.
  2. 其中servers是用于MQTT连接的数据通道服务器地址,端口有多个选择
  3. 至此, 设备端已经完成了认证和获取接入服务器的ip地址,下一步请参考设备接入,进行mqtt通信。
  4. 服务器返回的sign使用以上一致的签名策略对servers、pubkey、pkVersion参数(success除外)签名,供客户端验证(防止dns劫持风险),证书和数据服务器ip可以缓存客户端。
  • 错误码

    • 当有异常时返回json错误格式:
      1. {"errorCode":"InvalidSign","message":"illegle sign!","success":false}
      • 其中errorCode有: InvalidSign:签名错误,CertExpired:证书过期,InvalidPara:参数错误,Reject:非法请求,Unknow:系统异常

最后更新:2016-11-23 17:16:07

  上一篇:go JAVA-SDK使用(CCP)__SDK使用参考_设备端接入手册_阿里云物联网套件-阿里云
  下一篇:go 接入协议__设备基于MQTT接入_设备端接入手册_阿里云物联网套件-阿里云