设备通过您自研的MQTT接入工具连接物联网平台时,需输入MQTT的签名认证参数username、passwd和mqttClientId。本文介绍计算MQTT连接签名参数值的两种方法。

使用网页工具计算

该方法支持两种签名算法hmacmd5和hmacsha1。

  1. 单击下载MQTT_Password工具包,然后解压。
  2. 在文件夹MQTT_Password下,使用浏览器打开sign.html文件。
    网页工具
  3. 在MQTT签名计算页面,根据页面提示,输入对应信息,如下图所示。
    网页
    参数 说明
    productKey 您添加设备后,保存的设备证书信息,请参见设备证书信息

    您可在控制台中设备的设备详情页面查看。

    deviceName
    deviceSecret
    timestamp 时间戳。当前时间毫秒值,自动填充。每刷新一次页面,更新一次。
    clientId 设备的Client ID信息,可自定义,长度在64个字符以内。建议使用您设备的MAC地址或SN码,方便您识别区分不同的设备。
    method 签名算法类型,支持hmacmd5hmacsha1
  4. 单击Generate计算结果显示签名参数值。
    计算结果

使用Node.js语言脚本计算

该方法仅支持签名算法hmacsha1。

  1. 下载签名工具包signTool.zip,解压缩后,在文件mqttSignTool.js中修改以下参数,并保存。
    参数 示例 说明
    productKey a1Ee*** 您添加设备后,保存的设备证书信息,请参见设备证书信息

    您可在控制台中设备的设备详情页面查看。

    deviceName 8Co5***
    deviceSecret bcabcf***
    timestamp 2524608000000 时间戳。当前时间毫秒值。
    briefId 12345 可选参数。设备的Client ID信息,可自定义,长度在64个字符以内。建议使用您设备的MAC地址或SN码,方便您识别区分不同的设备。

    本工具包默认设置为productKey + '.' + deviceName组成的字符串,您可根据需要修改,例如var briefId = '12345'

    注意 该值可自定义,长度在64个字符以内。建议使用您设备的MAC地址或SN码,方便您识别区分不同的设备。
  2. 在Windows系统或Linux系统下,下载并安装Node.js。本文以Ubuntu 16.04 64位Linux系统为例,下载已编译的包node-v16.5.0-linux-x64。
    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接入物联网平台的签名认证参数信息。结果