本文主要介紹基于IPv6的MQTT協議連接設備的配置說明。您可通過MQTT直連方式將設備接入物聯網平臺。

使用限制

目前,僅華東2(上海)地域支持基于IPv6協議的MQTT通道。

設備端接入物聯網平臺

  1. 下載用于TLS加密的根證書。根證書使用方法,請參見CA Certificates
  2. 開發設備端,配置MQTT連接。

    建議您使用阿里云提供的設備端SDK接入物聯網平臺。如果您自行開發設備端,簽名時,請參見MQTT連接簽名示例

    需配置的信息如下表。

    字段具體信息
    連接域名和端口域名為ipv6.itls.cn-shanghai.aliyuncs.com,端口號為1883。
    可變報頭(variable header):Keep AliveCONNECT指令中需包含Keep Alive(保活時間)。保活心跳時間取值范圍為30至1200秒。如果心跳時間不在此區間內,物聯網平臺會拒絕連接。建議取值300秒以上。如果網絡不穩定,將心跳時間設置高一些。
    MQTT的CONNECT報文參數
    mqttClientId: clientId+"|securemode=2,signmethod=hmacsha1,timestamp=132323232|"
    mqttUsername: deviceName+"&"+productKey
    mqttPassword: sign_hmac(deviceSecret,content)

    mqttPassword:sign簽名需把提交給服務器的參數按字典排序后,根據signmethod加簽。

    content的值為提交給服務器的參數(ProductKeyDeviceNametimestampclientId),按照字母順序排序, 然后將參數值依次拼接。

    • clientId:表示客戶端ID,建議使用設備的MAC地址或SN碼,64字符內。
    • timestamp:表示當前時間毫秒值,可以不傳遞。
    • mqttClientId:格式中||內為擴展參數。
    • signmethod:表示簽名算法類型。支持hmacmd5,hmacsha1和hmacsha256,默認為hmacmd5。
    • securemode:表示目前安全模式,取值2 (TLS直連模式)。

    示例:

    假設clientId = 12345,deviceName = device, productKey = pk, timestamp = 789,signmethod=hmacsha1,deviceSecret=secret,那么使用TLS方式提交給MQTT的參數如下:

    mqttclientId=12345|securemode=2,signmethod=hmacsha1,timestamp=789|
    mqttUsername=device&pk
    mqttPassword=hmacsha1("secret","clientId12345deviceNamedeviceproductKeypktimestamp789").toHexString(); 

    加密后的Password為二進制轉16進制字符串,示例結果為:

    FAFD82A3D602B37FB0FA8B7892F24A477F85****

相關文檔

MQTT-TCP連接通信