本文主要介紹基於IPv6的MQTT協議串連裝置的配置說明。您可通過MQTT直連方式將裝置接入物聯網平台。
使用限制
目前,僅華東2(上海)地區支援基於IPv6協議的MQTT通道。
裝置端接入物聯網平台
- 下載用於TLS加密的根憑證。根憑證使用方法,請參見CA Certificates。
- 開發裝置端,配置MQTT串連。
建議您使用阿里雲提供的裝置端SDK接入物聯網平台。如果您自行開發裝置端,簽名時,請參見MQTT串連簽名樣本。
需配置的資訊如下表。
欄位 具體資訊 串連網域名稱和連接埠 網域名稱為 ipv6.itls.cn-shanghai.aliyuncs.com
,連接埠號碼為1883。可變前序(variable header):Keep Alive CONNECT指令中需包含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的值為提交給伺服器的參數(ProductKey、DeviceName、timestamp和clientId),按照字母順序排序, 然後將參數值依次拼接。
- 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****