Tous les produits
Search
Centre de documentation

IoT Platform:Connecter un appareil de passerelle MQTT à l'aide d'une authentification mutuelle basée sur les certificats X.509

Dernière mise à jour :Aug 21, 2026

Lorsque vous connectez un appareil à IoT Platform via une passerelle Message Queuing Telemetry Transport (MQTT), vous pouvez activer l'authentification mutuelle entre l'appareil et IoT Platform pour vérifier l'identité de l'appareil. Cette rubrique explique comment connecter un appareil à IoT Platform en utilisant une authentification mutuelle basée sur les certificats X.509. Dans cet exemple, nous créons une passerelle MQTT dont le paramètre Authentication Type est défini sur One-party Verification et le paramètre Enable X.509 certificate-based Device Verification sur Yes, et nous fournissons un exemple de code Java.

Prérequis

  • Vous avez acheté une instance Exclusive Enterprise Edition. Dans cet exemple, l'instance est achetée dans la région Chine (Shanghai). Pour plus d'informations, consultez Acheter une instance Enterprise Edition.

  • Les certificats nécessaires à l'authentification mutuelle sont prêts.

    Dans cet exemple, les fichiers de certificat suivants sont utilisés : le fichier de certificat racine root-ca.crt, le fichier de clé privée côté serveur server.key, le fichier de certificat côté serveur server.crt, le fichier de clé privée côté appareil client.key et le fichier de certificat d'appareil client.crt.

Contexte

IoT Platform met à disposition des passerelles MQTT et vous permet d'utiliser des certificats X.509 ainsi que des certificats personnalisés pour authentifier et connecter les appareils à IoT Platform. Cette approche permet à IoT Platform de répondre aux exigences de divers scénarios métier IoT.

Pour plus d'informations sur l'authentification et la communication entre les passerelles MQTT et les appareils, consultez la documentation relative aux passerelles MQTT.

Préparatifs

Dans cet exemple, le programme est développé en Java. Préparez un environnement de développement Java répondant aux exigences suivantes :

Créer une passerelle et ajouter un appareil

  1. Créer une passerelle MQTT : dans la boîte de dialogue Add Gateway, définissez le paramètre Server Certificate avec le contenu du fichier server.crt, le paramètre Private Key of Server Certificate avec le contenu du fichier server.key et le paramètre Device Root Certificate avec le contenu du fichier root-ca.crt. Configurez ensuite les autres paramètres comme suit :

    • Définissez Protocol sur MQTT

    • Définissez Custom Port sur 1883

    • Définissez Authentication Type sur One-party Verification

    • Définissez Enable Data Parsing sur No

    • Définissez Enable Device X.509 Certificate Authentication sur Yes

    • Définissez Enable OCSP sur Not Enabled

  2. Sur la page Gateway, copiez l'URL figurant dans la colonne Gateway URL de la passerelle. Le format de l'URL Gateway URL est par exemple iot-{gateway identifier}.igw.iothub.aliyuncs.com, avec le numéro de port 1883.

  3. Ajouter un appareil au produit de passerelle MQTT. Dans cet exemple, ajoutez un appareil avec le paramètre MQTT Username défini sur device01 et le paramètre MQTT Password défini sur hello456.

Développer un programme pour l'appareil

  1. Téléchargez le package de code aiot-java-dual-auth-demo et décompressez-le.

  2. Ouvrez IntelliJ IDEA et importez l'exemple de projet aiot-java-demo depuis le package de code.

    • Ajoutez les dépendances Maven au fichier pom.xml. Dans cet exemple, utilisez les dépendances suivantes :

         <dependency>
            <groupId>org.eclipse.paho</groupId>
            <artifactId>org.eclipse.paho.mqttv5.client</artifactId>
            <version>1.2.5</version>
          </dependency>
          <dependency>
              <groupId>org.eclipse.paho</groupId>
              <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
              <version>1.2.0</version>
          </dependency>
          <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
          </dependency>
      
          <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-jdk15on</artifactId>
            <version>1.47</version>
          </dependency>
    • Le répertoire /src/main/java/com/aliyun/iot du projet contient les fichiers de programme suivants requis pour l'authentification mutuelle :

      • SslUtil.java : lit les certificats de l'appareil.

      • Mqtt5TlsApp.java : connecte les appareils à IoT Platform.

  3. Dans le fichier pom.xml du projet, cliquez sur Load Maven Changes pour télécharger les packages de dépendance.

  4. Dans le répertoire /src/main du projet, créez un dossier nommé resources.

  5. Dans le répertoire /src/main/resources du projet, importez les fichiers de certificat suivants : root-ca.crt contenant le certificat racine, client.key contenant la clé privée côté appareil et client.crt contenant le certificat de l'appareil.

  6. Dans le fichier /src/main/java/com/aliyun/iot/SslUtil.java du projet, modifiez la clé utilisée pour générer un certificat.

    Important

    La valeur 123456 spécifiée pour la fonction clientKs.setKeyEntry() indique une clé utilisée pour générer un certificat. Adaptez cette valeur à votre scénario métier.

    ......
          // Replace 123456 with an actual key value.
          clientKs.setKeyEntry("private-key", key.getPrivate(), "123456".toCharArray(), new java.security.cert.Certificate[]{clientCertificate});
    ......
  7. Ouvrez le fichier /src/main/java/com/aliyun/iot/Mqtt5TlsApp.java du projet et modifiez les paramètres de connexion de l'appareil.

    ......
            // MQTT connection parameters
            String userName = "device01";
            String password = "hello456";
            String clientId = "test01_client1";
    
            // The path in which the root directory is stored.
            String caCertPath = "src/main/resources/root-ca.crt";
            // The path in which the device certificate is stored.
            String clientCertPath= "src/main/resources/client.crt";
            // The path in which the device-side private key is stored.
            String clientKeyPath="src/main/resources/client.key";
    
            // The URL of the MQTT gateway.
            String broker = "ssl://iot-*******.igw.iothub.aliyuncs.com:1883";
    ......

    Parameter

    Example

    Description

    userName

    device01

    Valeur du paramètre MQTT Username de l'appareil ajouté.

    password

    hello456

    Valeur du paramètre MQTT Password de l'appareil ajouté.

    clientId

    test01_client1

    (Facultatif) ID du client. L'ID client doit comporter entre 1 et 64 caractères. Nous vous recommandons d'utiliser l'adresse MAC ou le numéro de série (SN) de l'appareil comme ID client.

    caCertPath

    src/main/resources/root-ca.crt

    Chemin du projet où est stocké le fichier de certificat racine de l'appareil root-ca.crt.

    clientCertPath

    src/main/resources/client.crt

    Chemin du projet où est stocké le fichier de certificat de l'appareil client.crt.

    clientKeyPath

    src/main/resources/client.key

    Chemin du projet où est stocké le fichier de clé privée côté appareil client.key.

    broker

    ssl://iot-*******.igw.iothub.aliyuncs.com:1883

    Endpoint de la passerelle MQTT à laquelle vous souhaitez connecter l'appareil. Format : ssl://${Gateway endpoint}:${Port number}.

    Remplacez ${Gateway endpoint} et ${Port number} par l'endpoint et le numéro de port personnalisé de l'gateway URL que vous avez enregistrés.

  8. Exécutez le fichier de programme Mqtt5TlsApp.java pour effectuer l'authentification mutuelle entre l'appareil et IoT Platform.

    Remarque

    Dans cet exemple, Thread.sleep(20000); est ajouté au fichier Mqtt5TlsApp.java. Ce code termine le programme Mqtt5TlsApp.java et déconnecte l'appareil d'IoT Platform 20 secondes après l'exécution du programme. Dans des scénarios réels, écrivez du code personnalisé pour connecter ou déconnecter les appareils.

    Le résultat suivant s'affiche. Une fois l'appareil authentifié, il est connecté à IoT Platform.

    broker: ssl://iot-xxx.igw.iothub.aliyuncs.com:1883 Connected
    broker available ability, retain is available: true
    broker available ability, shared subscription is available: true
    publish: content finish
    Disconnected