全部產品
Search
文件中心

IoT Platform:如何計算MQTT簽名參數

更新時間:Jun 30, 2024

裝置通過您自研的MQTT接入工具串連物聯網平台時,需輸入MQTT的簽名認證參數username、passwd和mqttClientId。本文介紹擷取MQTT串連簽名參數值的方法。

概述

您可根據實際業務需要,選擇如下方法擷取MQTT簽名參數值。

方法說明
直接在物聯網平台擷取支援簽名演算法為hmacsha256。

裝置的ClientId預設為${ProductKey} + '.' + ${DeviceName}組成的字串,不可修改。

使用Node.js語言指令碼計算支援簽名演算法為hmacsha256。

裝置的ClientId預設為${ProductKey} + '.' + ${DeviceName}組成的字串,可修改。

直接在物聯網平台擷取

  1. 登入物聯網平台控制台

  2. 執行個體概覽頁簽的全部環境下,找到對應的執行個體,單擊執行個體卡片。

  3. 在左側導覽列,選擇裝置管理 > 裝置,進入裝置頁面。
  4. 在裝置列表中,單擊目標裝置對應的查看按鈕,進入裝置詳情頁面。
  5. 裝置資訊頁簽下,單擊MQTT串連參數右側的查看,擷取MQTT簽名參數資訊。
    重要 其中clientId是mqttClientId值,請勿與裝置的clientId混淆。MQTT串連參數的詳細說明,請參見MQTT-TLS串連通訊
    MQTT串連參數

使用Node.js語言指令碼計算

  1. 下載簽名工具包signTool.zip,解壓縮後,在檔案mqttSignTool.js中修改以下參數,並儲存。
    參數樣本說明
    productKeya1Ee***您添加裝置後,儲存的裝置認證資訊,請參見裝置認證資訊

    您可在控制台中裝置的裝置詳情頁面查看。

    deviceName8Co5***
    deviceSecretbcabcf***
    timestamp 2524608000000時間戳記。目前時間毫秒值。
    briefId12345裝置的Client ID資訊。選擇性參數。

    本工具包預設設定為${ProductKey} + '.' + ${DeviceName}組成的字串,您可根據需要修改,例如var briefId = '12345'

    重要 該值可自訂,長度在64個字元以內。建議使用您裝置的MAC地址或SN碼,方便您識別區分不同的裝置。
  2. 在Windows系統或Linux系統下,下載並安裝Node.js。本文以Ubuntu 16.04 64位Linux系統為例,下載已編譯的包node-v16.5.0-linux-x64.tar.gz
    1. 登入Linux虛擬機器。
    2. 執行以下命令,下載對應版本包,然後解壓。
      wget https://nodejs.org/dist/v16.5.0/node-v16.5.0-linux-x64.tar.gz
      tar xf node-v16.5.0-linux-x64.tar.gz
      cd node-v16.5.0-linux-x64
      ./bin/node -v
      顯示如下版本號碼,表示解壓安裝成功。
      v16.5.0
    3. node-v16.5.0-linux-x64/bin檔案目錄下包含了node、npm等命令,執行以下命令配置全域環境變數。
      ln -s /root/node-v16.5.0-linux-x64/bin/npm   /usr/local/bin/
      ln -s /root/node-v16.5.0-linux-x64/bin/node   /usr/local/bin/
  3. 執行以下命令,先退出node-v16.5.0-linux-x64檔案目錄,然後建立專案檔signTool,來存放JavaScript檔案和簽名庫檔案。
    cd..
    mkdir signTool
    cd signTool/
  4. 將步驟1中已修改完成的mqttSignTool.js檔案,上傳至Linux虛擬機器開發環境的signTool目錄下。
  5. signTool檔案下,執行以下命令,下載並查看簽名庫檔案。
    npm install crypto-js
    ls
    下載後的庫檔案如下圖所示。檔案
  6. 執行以下命令,運行簽名檔案mqttSignTool.js
    node mqttSignTool.js
    返回如下資訊,即為通過MQTT接入物聯網平台的簽名認證參數資訊。
    重要 其中clientId是mqttClientId值,請勿與裝置的clientId混淆。MQTT串連參數的詳細說明,請參見MQTT-TLS串連通訊
    結果