Todos los productos
Search
Centro de documentos

IoT Platform:Conexión de un dispositivo de puerta de enlace MQTT mediante verificación bidireccional con certificado X.509

Última actualización: Sep 04, 2026

When you connect a device to IoT Platform by using a Message Queuing Telemetry Transport (MQTT) gateway, you can enable two-way verification between the device and IoT Platform to verify the identity of the device. Este tema describe cómo conectar un dispositivo a IoT Platform mediante la verificación bidireccional con certificado X.509. En este ejemplo, se crea una puerta de enlace MQTT cuyo parámetro Authentication Type está configurado en One-party Verification y el parámetro Enable X.509 certificate-based Device Verification está establecido en Yes; además, se proporciona código Java de muestra.

Requisitos previos

  • Se adquirió una instancia Exclusive Enterprise Edition. En este ejemplo, la instancia Exclusive Enterprise Edition se adquirió en la región China (Shanghai). Para obtener más información, consulte Purchase an Enterprise Edition instance.

  • Se prepararon los certificados necesarios para realizar la verificación bidireccional.

    En este ejemplo se utilizan los siguientes archivos de certificado: root-ca.crt (archivo de certificado raíz), server.key (archivo de clave privada del servidor), server.crt (archivo de certificado del servidor), client.key (archivo de clave privada del dispositivo) y client.crt (archivo de certificado del dispositivo).

Contexto

IoT Platform ofrece puertas de enlace MQTT y permite utilizar certificados X.509 y certificados personalizados para verificar y conectar dispositivos a IoT Platform con fines de comunicación. Esto ayuda a IoT Platform a cumplir con los requisitos de diversos escenarios de negocio de IoT.

Para obtener más información sobre la verificación y la comunicación entre las puertas de enlace MQTT y los dispositivos, consulte MQTT gateways.

Preparativos

En este ejemplo se utiliza Java para desarrollar un programa. Se requiere un entorno de desarrollo de Java que cumpla con los siguientes requisitos:

Creación de una puerta de enlace y adición de un dispositivo

  1. Create an MQTT gateway: En el cuadro de diálogo Add Gateway, establezca el parámetro Server Certificate con el contenido del archivo server.crt, el parámetro Private Key of Server Certificate con el contenido del archivo server.key y el parámetro Device Root Certificate con el contenido del archivo root-ca.crt. A continuación, configure los demás parámetros de la siguiente manera:

    • Establezca Protocol en MQTT

    • Establezca Custom Port en 1883

    • Establezca Authentication Type en One-party Verification

    • Establezca Enable Data Parsing en No

    • Establezca Enable Device X.509 Certificate Authentication en Yes

    • Establezca Enable OCSP en Not Enabled

  2. En la página Gateway, copie la URL de la columna Gateway URL correspondiente a la puerta de enlace. El formato de Gateway URL es similar a iot-{gateway identifier}.igw.iothub.aliyuncs.com, con el número de puerto 1883.

  3. Add a device to the MQTT gateway product. En este ejemplo se agrega un dispositivo cuyo parámetro MQTT Username está establecido en device01 y cuyo parámetro MQTT Password está establecido en hello456.

Desarrollo del programa del dispositivo

  1. Descargue el paquete de código aiot-java-dual-auth-demo y descomprímalo.

  2. Abra IntelliJ IDEA e importe el proyecto de muestra aiot-java-demo desde el paquete de código.

    • Agregue las dependencias de Maven al archivo pom.xml. En este ejemplo se utilizan las siguientes dependencias:

         <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>
    • El directorio /src/main/java/com/aliyun/iot del proyecto contiene los siguientes archivos de programa necesarios para realizar la verificación bidireccional:

      • SslUtil.java: lee los certificados del dispositivo.

      • Mqtt5TlsApp.java: conecta los dispositivos a IoT Platform.

  3. En el archivo pom.xml del proyecto, haga clic en Load Maven Changes para descargar los paquetes de dependencias.

  4. En el directorio /src/main del proyecto, cree una carpeta llamada resources.

  5. En el directorio /src/main/resources del proyecto, importe los siguientes archivos de certificado: root-ca.crt (que contiene el certificado raíz), client.key (que contiene la clave privada del dispositivo) y client.crt (que contiene el certificado del dispositivo).

  6. En el archivo /src/main/java/com/aliyun/iot/SslUtil.java del proyecto, modifique la clave que se utiliza para generar un certificado.

    Importante

    El valor 123456 especificado en la función clientKs.setKeyEntry() indica una clave que se usa para generar un certificado. Cambie este valor según su escenario de negocio.

    ......
          // Replace 123456 with an actual key value.
          clientKs.setKeyEntry("private-key", key.getPrivate(), "123456".toCharArray(), new java.security.cert.Certificate[]{clientCertificate});
    ......
  7. Abra el archivo /src/main/java/com/aliyun/iot/Mqtt5TlsApp.java del proyecto y modifique los parámetros de conexión del dispositivo.

    ......
            // 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";
    ......

    Parámetro

    Ejemplo

    Descripción

    userName

    device01

    Valor del parámetro MQTT Username del dispositivo agregado.

    password

    hello456

    Valor del parámetro MQTT Password del dispositivo agregado.

    clientId

    test01_client1

    (Opcional) ID del cliente. Debe tener entre 1 y 64 caracteres. Se recomienda usar la dirección MAC o el número de serie (SN) del dispositivo como ID de cliente.

    caCertPath

    src/main/resources/root-ca.crt

    Ruta del proyecto donde se almacena el archivo de certificado raíz del dispositivo root-ca.crt.

    clientCertPath

    src/main/resources/client.crt

    Ruta del proyecto donde se almacena el archivo de certificado del dispositivo client.crt.

    clientKeyPath

    src/main/resources/client.key

    Ruta del proyecto donde se almacena el archivo de clave privada del dispositivo client.key.

    broker

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

    Endpoint de la puerta de enlace MQTT a la que desea conectar el dispositivo. Formato: ssl://${Gateway endpoint}:${Port number}.

    Sustituya ${Gateway endpoint} y ${Port number} por el endpoint del número de puerto personalizado de la gateway URL que guardó previamente.

  8. Ejecute el archivo de programa Mqtt5TlsApp.java para llevar a cabo la verificación bidireccional entre el dispositivo e IoT Platform.

    Nota

    En este ejemplo se agregó Thread.sleep(20000); al archivo Mqtt5TlsApp.java. Este código finaliza el programa Mqtt5TlsApp.java y desconecta el dispositivo de IoT Platform 20 segundos después de iniciada la ejecución. En escenarios reales, puede escribir código personalizado para conectar o desconectar dispositivos.

    La siguiente salida muestra el resultado. Una vez superada la verificación, el dispositivo queda conectado a 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