Tous les produits
Search
Centre de documentation

IoT Platform:Connect over MQTT-TLS

Dernière mise à jour :Aug 09, 2026

MQTT-TLS utilise le protocole TLS pour chiffrer les communications de type publication/abonnement entre les appareils et IoT Platform, garantissant ainsi la sécurité des données.

Contexte

Lors de la configuration du protocole CONNECT MQTT, tenez compte des points suivants :

  • Si plusieurs appareils physiques partagent le même certificat d'appareil (ProductKey, DeviceName et DeviceSecret) ou les mêmes informations d'identification (ProductKey, DeviceName, ClientID et DeviceToken), des déconnexions fréquentes se produiront. L'authentification d'un nouvel appareil force la déconnexion du précédent, ce qui déclenche des tentatives de reconnexion automatiques.

  • Le Link SDK côté appareil se reconnecte automatiquement en cas de déconnexion. Surveillez le comportement des appareils dans Simple Log Service.

Connexion directe du client MQTT

Important

Les connexions TCP non chiffrées présentent un risque de sécurité élevé et sont désactivées par défaut pour les nouvelles instances Enterprise.

  1. Utilisez une connexion chiffrée par TLS pour garantir une communication sécurisée.

    • Le Link SDK côté appareil est préconfiguré avec le chiffrement TLS. Aucune configuration manuelle n'est requise.

    • Si vous développez votre propre client d'appareil, utilisez l'un des certificats racines suivants pour authentifier le serveur IoT Platform :

      • Recommandé : Certificat auto-signé Alibaba Cloud IoT Platform. Valide jusqu'au 4 juillet 2053. Connectez-vous au port 8883.

        Important

        Vous pouvez utiliser le hachage MD5 c7a6afb466713832af778a7bcb6d1aef pour vérifier l'intégrité du fichier de certificat.

      • Certificat racine Global Sign R1. Valide jusqu'au 28 janvier 2028. Connectez-vous au port 1883. Après expiration, les appareils doivent mettre à jour leur certificat racine CA pour poursuivre la vérification TLS.

    Correspondance entre port et certificat

    Choisissez votre port de connexion en fonction du certificat racine utilisé par votre appareil :

    • Si votre appareil utilise le certificat racine Global Sign R1 (non encore mis à jour), connectez-vous au port 443 ou 1883.

    • Si votre appareil utilise le certificat auto-signé Alibaba Cloud IoT Platform, connectez-vous au port 8883.

    Impact de l'expiration du certificat Global Sign R1

    Le certificat racine Global Sign R1 utilisé avec le port 1883 expire le 28 janvier 2028. Après cette date :

    • Les appareils qui dépendent du certificat expiré — y compris ceux utilisant Link SDK ou les appareils développés en interne qui n'ont pas mis à jour leur certificat racine CA — ne parviendront pas à établir de connexions TLS.

    • Les appareils se connectant via MQTT-TCP (sans TLS) ne sont pas affectés par l'expiration de ce certificat.

    Évolutions prévues

    Après 2028, le port 1883 ne prendra plus en charge les connexions TLS. Avant cette date, mettez à niveau votre SDK ou actualisez le certificat racine CA sur vos appareils vers le certificat auto-signé Alibaba Cloud IoT Platform, et basculez vers le port 8883 ou 443.

  2. Connectez-vous au serveur à l'aide d'un client MQTT.

    1. Utilisez des clients MQTT open source pour vous connecter. Consultez également la documentation officielle MQTT.

      Remarque

      Alibaba Cloud ne fournit pas de support technique pour le code tiers.

    2. Utilisez un SDK côté appareil pour vous connecter à IoT Platform . Pour un exemple en C, consultez la section Connexion MQTT. Si vous développez votre propre client, configurez les paramètres suivants.

      Paramètre

      Description

      Nom de domaine de connexion

      Pour les noms de domaine de connexion MQTT des instances publiques et des instances Enterprise, consultez Afficher et configurer les endpoints d'instance.

      En-tête variable : Keep Alive

      L'instruction CONNECT doit inclure l'intervalle Keep Alive. Plage valide : 30 à 1200 secondes. Recommandé : 300 secondes ou plus (augmentez cette valeur pour les réseaux instables). IoT Platform rejette les connexions dont les valeurs sont hors plage.

      Les détails figurent dans la section Keepalive MQTT ci-dessous.

      Paramètres du message MQTT CONNECT

      Pour l'authentification par pré-enregistrement One-Device-One-Secret et One-Product-One-Secret : Connectez-vous à l'aide d'un certificat d'appareil (ProductKey, DeviceName et DeviceSecret).

      mqttClientId: clientId+"|securemode=3,signmethod=hmacsha1,timestamp=132323232|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: sign_hmac(deviceSecret,content)
      • mqttClientId : Le contenu entre | | correspond aux paramètres d'extension.

      • clientId : Un ID client personnalisé. Longueur maximale : 64 caractères. Nous recommandons d'utiliser l'adresse MAC ou le numéro de série (SN) de l'appareil pour faciliter l'identification.

      • securemode : Le mode de sécurité. Valeurs valides : 2 (connexion directe TLS) et 3 (connexion directe TCP).

      • signmethod : L'algorithme de signature. Valeurs valides : hmacmd5, hmacsha1, hmacsha256.

      • timestamp : Facultatif. L'heure actuelle en millisecondes.

      • mqttPassword : Triez les paramètres soumis au serveur par ordre alphabétique, puis signez-les à l'aide de la signmethod spécifiée. Les détails du calcul figurent dans l'exemple de signature de connexion MQTT.

      • content : La valeur de content est une chaîne générée par la concaténation des valeurs des paramètres (productKey, deviceName, timestamp et clientId) soumis au serveur. Avant la concaténation, triez les paramètres par ordre alphabétique en fonction de leurs noms.

        Important

        productKey et deviceName sont des paramètres obligatoires, tandis que timestamp et clientId sont facultatifs. Si vous transmettez timestamp ou clientId, la valeur doit être identique à celle définie pour mqttClientId.

      Exemple :

      Supposons que clientId = 12345, deviceName = device, productKey = pk, timestamp = 789, signmethod=hmacsha1, et deviceSecret=secret. Les paramètres suivants sont soumis à MQTT sur TCP :

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

      Le mot de passe chiffré est une chaîne binaire convertie en hexadécimal. Voici un exemple de résultat :

      FAFD82A3D602B37FB0FA8B7892F24A477F85****

      Pour calculer les paramètres de signature MQTT, suivez les instructions de la rubrique Comment calculer les paramètres de signature MQTT.

      Pour l'authentification One-Product-One-Secret sans pré-enregistrement : Connectez-vous à l'aide de ProductKey, DeviceName, ClientID et DeviceToken.

      mqttClientId: clientId+"|securemode=-2,authType=connwl|"
      mqttUsername: deviceName+"&"+productKey
      mqttPassword: deviceToken
      • mqttClientId : Le contenu entre | | correspond aux paramètres d'extension.

      • clientId, deviceToken : Le ClientID et le DeviceToken obtenus via l'enregistrement dynamique d'appareil via MQTT.

      • securemode : Le mode de sécurité. Pour l'authentification One-Product-One-Secret sans pré-enregistrement, ce paramètre est fixé à -2.

      • authType : La méthode d'authentification. Pour l'authentification One-Product-One-Secret sans pré-enregistrement, ce paramètre est fixé à connwl.

Exemples

Les rubriques suivantes fournissent des exemples de connexion à l'aide de clients MQTT open source :

Keepalive MQTT

L'appareil doit envoyer au moins un message (par exemple, une requête PING) dans chaque intervalle de keepalive.

Plage valide : 30 à 1 200 secondes. Recommandé : 300 secondes ou plus.

Le minuteur de heartbeat démarre lorsque IoT Platform envoie un message CONNACK en réponse à un message CONNECT. Le minuteur est réinitialisé lors de la réception d'un message PUBLISH, SUBSCRIBE, PING ou PUBACK. IoT Platform vérifie le heartbeat de keepalive de l'appareil toutes les 30 secondes. Le temps d'attente pour la détection planifiée correspond à la période allant de la mise en ligne de l'appareil à la dernière détection planifiée. La durée maximale de délai d'expiration est calculée à l'aide de la formule suivante : (intervalle keepalive × 1,5) + (temps d'attente pour la détection planifiée). Si aucun message n'est reçu de l'appareil après la durée maximale de délai d'expiration, le serveur déconnecte automatiquement l'appareil.