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