本文主要介紹基于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****