閱讀232 返回首頁    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接入_設備端接入手冊_阿裏雲物聯網套件-阿裏雲