Todos os produtos
Search
Central de documentação

IoT Platform:Conectar um dispositivo de gateway MQTT usando verificação bidirecional baseada em certificado X.509

Última atualização: Aug 21, 2026

Ao conectar um dispositivo ao IoT Platform por meio de um gateway Message Queuing Telemetry Transport (MQTT), você pode ativar a verificação bidirecional entre o dispositivo e o IoT Platform para validar a identidade do dispositivo. Este tópico descreve como conectar um dispositivo ao IoT Platform usando verificação bidirecional baseada em certificado X.509. Neste exemplo, cria-se um gateway MQTT com o parâmetro Authentication Type definido como One-party Verification e o parâmetro Enable X.509 certificate-based Device Verification definido como Yes. Também é fornecido um código Java de amostra.

Pré-requisitos

  • Você adquiriu uma instância Exclusive Enterprise Edition. Neste exemplo, a instância Exclusive Enterprise Edition foi adquirida na região China (Shanghai). Para mais informações, consulte Purchase an Enterprise Edition instance.

  • Os certificados necessários para a verificação bidirecional estão preparados.

    Neste exemplo, são usados os seguintes arquivos de certificado: root-ca.crt (arquivo de certificado raiz), server.key (arquivo de chave privada do servidor), server.crt (arquivo de certificado do servidor), client.key (arquivo de chave privada do dispositivo) e client.crt (arquivo de certificado do dispositivo).

Informações básicas

O IoT Platform oferece gateways MQTT e permite o uso de certificados X.509 e personalizados para verificar e conectar dispositivos ao IoT Platform. Isso ajuda o IoT Platform a atender aos requisitos de diversos cenários de negócios de IoT.

Para mais informações sobre verificação e comunicação entre gateways MQTT e dispositivos, consulte MQTT gateways.

Preparações

Neste exemplo, usa-se Java para desenvolver o programa. Prepare um ambiente de desenvolvimento Java que atenda aos seguintes requisitos:

Crie um gateway e adicione um dispositivo

  1. Create an MQTT gateway: Na caixa de diálogo Add Gateway, defina o parâmetro Server Certificate com o conteúdo do arquivo server.crt, o parâmetro Private Key of Server Certificate com o conteúdo do arquivo server.key e o parâmetro Device Root Certificate com o conteúdo do arquivo root-ca.crt. Em seguida, configure os demais parâmetros da seguinte forma:

    • Defina Protocol como MQTT

    • Defina Custom Port como 1883

    • Defina Authentication Type como One-party Verification

    • Defina Enable Data Parsing como No

    • Defina Enable Device X.509 Certificate Authentication como Yes

    • Defina Enable OCSP como Not Enabled

  2. Na página Gateway, copie a URL na coluna Gateway URL do gateway. O formato da Gateway URL segue o exemplo iot-{gateway identifier}.igw.iothub.aliyuncs.com, com o número de porta 1883.

  3. Add a device to the MQTT gateway product. Neste exemplo, adicione um dispositivo com o parâmetro MQTT Username definido como device01 e o parâmetro MQTT Password definido como hello456.

Desenvolver um programa de dispositivo

  1. Baixe o pacote de código aiot-java-dual-auth-demo e descompacte-o.

  2. Abra o IntelliJ IDEA e importe o projeto de amostra aiot-java-demo do pacote de código.

    • Adicione dependências Maven ao arquivo pom.xml. Neste exemplo, use as seguintes dependências:

         <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>
    • O diretório /src/main/java/com/aliyun/iot do projeto contém os seguintes arquivos de programa necessários para a verificação bidirecional:

      • SslUtil.java: lê os certificados do dispositivo.

      • Mqtt5TlsApp.java: conecta dispositivos ao IoT Platform.

  3. No arquivo pom.xml do projeto, clique em Load Maven Changes para baixar os pacotes de dependência.

  4. No diretório /src/main do projeto, crie uma pasta chamada resources.

  5. No diretório /src/main/resources do projeto, importe os seguintes arquivos de certificado: root-ca.crt (contendo o certificado raiz), client.key (contendo a chave privada do dispositivo) e client.crt (contendo o certificado do dispositivo).

  6. No arquivo /src/main/java/com/aliyun/iot/SslUtil.java do projeto, modifique a chave usada para gerar o certificado.

    Importante

    O valor 123456 especificado na função clientKs.setKeyEntry() indica uma chave usada para gerar um certificado. Altere esse valor conforme o seu cenário de negócios.

    ......
          // Replace 123456 with an actual key value.
          clientKs.setKeyEntry("private-key", key.getPrivate(), "123456".toCharArray(), new java.security.cert.Certificate[]{clientCertificate});
    ......
  7. Abra o arquivo /src/main/java/com/aliyun/iot/Mqtt5TlsApp.java do projeto e modifique os parâmetros de conexão do 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

    Exemplo

    Descrição

    userName

    device01

    Valor do parâmetro MQTT Username do dispositivo adicionado.

    password

    hello456

    Valor do parâmetro MQTT Password do dispositivo adicionado.

    clientId

    test01_client1

    (Opcional) ID do cliente. Deve ter entre 1 e 64 caracteres. Recomendamos usar o endereço MAC ou o número de série (SN) do dispositivo como ID do cliente.

    caCertPath

    src/main/resources/root-ca.crt

    Caminho do projeto onde o arquivo de certificado raiz do dispositivo root-ca.crt está armazenado.

    clientCertPath

    src/main/resources/client.crt

    Caminho do projeto onde o arquivo de certificado do dispositivo client.crt está armazenado.

    clientKeyPath

    src/main/resources/client.key

    Caminho do projeto onde o arquivo de chave privada do dispositivo client.key está armazenado.

    broker

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

    Endpoint do gateway MQTT ao qual você deseja conectar o dispositivo. Formato: ssl://${Gateway endpoint}:${Port number}.

    Substitua ${Gateway endpoint} e ${Port number} pelo endpoint e número de porta personalizados da gateway URL que você salvou.

  8. Execute o arquivo de programa Mqtt5TlsApp.java para realizar a verificação bidirecional entre o dispositivo e o IoT Platform.

    Nota

    Neste exemplo, adicionou-se Thread.sleep(20000); ao arquivo Mqtt5TlsApp.java. O código Thread.sleep(20000); encerra o programa Mqtt5TlsApp.java e desconecta o dispositivo do IoT Platform 20 segundos após a execução do programa. Em cenários reais, escreva seu próprio código personalizado para conectar ou desconectar dispositivos.

    A saída abaixo mostra o resultado. Após o dispositivo passar pela verificação, ele se conecta ao 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