日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MQTT-TLS連接通信

更新時(shí)間:

MQTT-TLS是基于TLS協(xié)議的MQTT連接,設(shè)備和物聯(lián)網(wǎng)平臺(tái)使用發(fā)布/訂閱模式的MQTT進(jìn)行通信,TLS協(xié)議可以加密通信過(guò)程,確保數(shù)據(jù)的安全性。

背景信息

在進(jìn)行MQTT CONNECT協(xié)議設(shè)置時(shí),需注意:

  • 如果同一個(gè)設(shè)備證書(shū)(ProductKey、DeviceName和DeviceSecret)或同一組ProductKey、DeviceName、ClientID、DeviceToken同時(shí)用于多個(gè)物理設(shè)備連接,可能會(huì)導(dǎo)致客戶端頻繁上線、離線。因?yàn)樾略O(shè)備連接認(rèn)證時(shí),原設(shè)備會(huì)被迫離線,而設(shè)備被離線后,又會(huì)自動(dòng)嘗試重新連接。

  • MQTT連接模式中,設(shè)備端Link SDK斷開(kāi)后會(huì)自動(dòng)重連。您可以通過(guò)日志服務(wù)查看設(shè)備行為。

MQTT客戶端直連

重要

設(shè)備使用TCP接入的安全風(fēng)險(xiǎn)非常高,新建的企業(yè)版實(shí)例默認(rèn)關(guān)閉TCP(非TLS加密)接入方式。

  1. 為保障通信安全,需使用TLS加密的連接方式。

    • 設(shè)備端Link SDK已配置TLS加密,您無(wú)需自行配置。

    • 若您自行開(kāi)發(fā)設(shè)備端,需要使用根證書(shū)完成對(duì)物聯(lián)網(wǎng)平臺(tái)的鑒權(quán)。目前有兩套根證書(shū):

      • 推薦: 阿里云物聯(lián)網(wǎng)平臺(tái)自簽名證書(shū),該CA根證書(shū)有效期到2053年07月04日,連接8883端口。

        重要

        您可以使用MD5:c7a6afb466713832af778a7bcb6d1aef校驗(yàn)證書(shū)文件,確保證書(shū)文件的完整性和正確性。

      • Global Sign R1根證書(shū),該CA根證書(shū)有效期到2028年01月28日,連接1883端口。證書(shū)失效后將無(wú)法再用于校驗(yàn)服務(wù)器。因此,請(qǐng)確保所有使用TLS加密的設(shè)備,均具備更新CA根證書(shū)的功能。

  2. 使用MQTT客戶端連接服務(wù)器。

    1. 連接方式,請(qǐng)參見(jiàn)開(kāi)源MQTT客戶端。 MQTT協(xié)議的更多信息,請(qǐng)參見(jiàn) MQTT官方文檔

      說(shuō)明

      若使用第三方代碼,阿里云不提供技術(shù)支持。

    2. MQTT連接時(shí)的參數(shù)說(shuō)明。建議您使用設(shè)備端SDK接入物聯(lián)網(wǎng)平臺(tái),以C語(yǔ)言為例,請(qǐng)參見(jiàn)MQTT接入。如果您自行開(kāi)發(fā)接入,連接參數(shù)如下。

      參數(shù)

      說(shuō)明

      接入域名

      公共實(shí)例和企業(yè)版實(shí)例中,MQTT的接入域名,請(qǐng)參見(jiàn)查看和配置實(shí)例終端節(jié)點(diǎn)信息(Endpoint)

      可變報(bào)頭(variable header):Keep Alive

      CONNECT指令中需包含Keep Alive(保活時(shí)間)。保活心跳時(shí)間取值范圍為30秒~1200秒,建議取值300秒以上。若網(wǎng)絡(luò)不穩(wěn)定,請(qǐng)將心跳時(shí)間設(shè)置長(zhǎng)一些。如果心跳時(shí)間不在保活時(shí)間內(nèi),物聯(lián)網(wǎng)平臺(tái)會(huì)拒絕連接。

      更多說(shuō)明,請(qǐng)參見(jiàn)下文MQTT保活

      MQTT的CONNECT報(bào)文參數(shù)

      一機(jī)一密、一型一密預(yù)注冊(cè)認(rèn)證方式:使用設(shè)備證書(shū)(ProductKey、DeviceName和DeviceSecret)連接。

      mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: sign_hmac(deviceSecret,content)
      • mqttClientId:格式中| |內(nèi)為擴(kuò)展參數(shù)。

      • clientId:表示客戶端ID,可自定義,長(zhǎng)度不可超過(guò)64個(gè)字符。建議使用設(shè)備的MAC地址或SN碼,方便您識(shí)別區(qū)分不同的客戶端。

      • securemode:表示目前安全模式,可選值有2(TLS直連模式)和3(TCP直連模式)。

      • signmethod:表示簽名算法類型。支持hmacmd5,hmacsha1和hmacsha256。

      • timestamp:表示當(dāng)前時(shí)間毫秒值,可以不傳遞。

      • mqttPassword:sign簽名需把提交給服務(wù)器的參數(shù)按字典排序后,根據(jù)signmethod加簽。簽名計(jì)算示例,請(qǐng)參見(jiàn)MQTT連接簽名示例

      • content的值為提交給服務(wù)器的參數(shù)(productKeydeviceNametimestampclientId),按照參數(shù)名稱首字母字典排序, 然后將參數(shù)值依次拼接。

        重要

        此處productKeydeviceName為必填參數(shù),timestampclientId為可選參數(shù)。若傳入timestampclientId,必須與mqttClientId中的設(shè)置相同。

      示例:

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

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

      加密后的Password為二進(jìn)制轉(zhuǎn)16制字符串,示例結(jié)果為:

      FAFD82A3D602B37FB0FA8B7892F24A477F85****

      MQTT簽名參數(shù)計(jì)算方法,請(qǐng)參見(jiàn)如何計(jì)算MQTT簽名參數(shù)

      一型一密免預(yù)注冊(cè)認(rèn)證方式:使用ProductKey、DeviceName、ClientID、DeviceToken連接。

      mqttClientId: clientId+"|securemode=-2,authType=connwl|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: deviceToken
      • mqttClientId:格式中| |內(nèi)為擴(kuò)展參數(shù)。

      • clientIddeviceToken:設(shè)備動(dòng)態(tài)注冊(cè)時(shí)獲得的ClientID、DeviceToken,請(qǐng)參見(jiàn)基于MQTT協(xié)議的設(shè)備動(dòng)態(tài)注冊(cè)

      • securemode:表示目前安全模式,采用一型一密免預(yù)注冊(cè)時(shí),固定取值為-2。

      • authType:表示認(rèn)證方式,采用一型一密免預(yù)注冊(cè)時(shí),固定取值為connwl。

使用示例

使用開(kāi)源MQTT客戶端接入物聯(lián)網(wǎng)平臺(tái)的示例,請(qǐng)參見(jiàn):

MQTT保活

設(shè)備端在保活時(shí)間間隔內(nèi),至少需要發(fā)送一次報(bào)文,包括ping請(qǐng)求。

連接保活時(shí)間的取值范圍為30秒~1200秒。建議取值300秒以上。

從物聯(lián)網(wǎng)平臺(tái)發(fā)送CONNACK響應(yīng)CONNECT消息時(shí),開(kāi)始心跳計(jì)時(shí)。收到PUBLISH、SUBSCRIBE、PING或 PUBACK消息時(shí),會(huì)重置計(jì)時(shí)器。物聯(lián)網(wǎng)平臺(tái)每隔30秒定時(shí)檢測(cè)一次設(shè)備的保活心跳,設(shè)備上線時(shí)間點(diǎn)距離最新定時(shí)檢測(cè)時(shí)間點(diǎn)的時(shí)間,是定時(shí)檢測(cè)的等待時(shí)間。定義最大超時(shí)時(shí)間為:保活心跳時(shí)間*1.5+定時(shí)檢測(cè)的等待時(shí)間。超過(guò)最大超時(shí)時(shí)間未收到設(shè)備消息,服務(wù)器會(huì)自動(dòng)斷開(kāi)連接。

常見(jiàn)問(wèn)題