Autenticar um dispositivo a jusante no Hub IoT do Azure

Aplica-se a:Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Em um cenário de gateway transparente, os dispositivos downstream (às vezes chamados de dispositivos filho) precisam de identidades no Hub IoT como qualquer outro dispositivo. Este artigo percorre as opções para autenticar um dispositivo downstream no Hub IoT e, em seguida, demonstra como declarar a conexão de gateway.

Nota

Um dispositivo downstream emite dados diretamente para a Internet ou para dispositivos de gateway (habilitado para IoT Edge ou não). Um dispositivo filho pode ser um dispositivo downstream ou um dispositivo gateway em uma topologia aninhada.

Há três etapas gerais para configurar uma conexão de gateway transparente bem-sucedida. Este artigo abrange a segunda etapa:

  1. Configure o dispositivo de gateway como um servidor para que os dispositivos downstream possam se conectar a ele com segurança. Configure o gateway para receber mensagens de dispositivos downstream e encaminhá-las para o destino adequado. Para essas etapas, consulte Configurar um dispositivo IoT Edge para atuar como um gateway transparente.
  2. Crie uma identidade de dispositivo para o dispositivo downstream para que ele possa se autenticar com o Hub IoT. Configure o dispositivo downstream para enviar mensagens através do dispositivo de gateway.
  3. Conecte o dispositivo downstream ao dispositivo de gateway e comece a enviar mensagens. Para essas etapas, consulte Conectar um dispositivo downstream a um gateway do Azure IoT Edge.

Os dispositivos downstream podem se autenticar com o Hub IoT usando um dos três métodos: chaves simétricas (às vezes chamadas de chaves de acesso compartilhadas), certificados autoassinados X.509 ou certificados assinados pela autoridade de certificação (CA) X.509. As etapas de autenticação são semelhantes às etapas usadas para configurar qualquer dispositivo que não seja IoT-Edge com o Hub IoT, com pequenas diferenças para declarar a relação de gateway.

Não há suporte para provisionamento automático de dispositivos downstream com o DPS (Serviço de Provisionamento de Dispositivos) do Hub IoT do Azure.

Pré-requisitos

Conclua as etapas em Configurar um dispositivo IoT Edge para atuar como um gateway transparente.

Se estiver a utilizar a autenticação X.509, irá gerar certificados para o seu dispositivo a jusante. Tenha o mesmo certificado de autoridade de certificação raiz e o script de geração de certificado que você usou para o artigo de gateway transparente disponível para uso novamente.

Este artigo refere-se ao nome do host do gateway em vários pontos. O nome do host do gateway é declarado no parâmetro hostname do arquivo de configuração no dispositivo de gateway do IoT Edge. É referido na cadeia de ligação do dispositivo a jusante. O nome do host do gateway precisa ser resolúvel para um endereço IP, usando DNS ou uma entrada de arquivo host no dispositivo downstream.

Registrar dispositivo com o Hub IoT

Escolha como deseja que seu dispositivo downstream seja autenticado com o Hub IoT:

  • Autenticação de chave simétrica: o Hub IoT cria uma chave que você coloca no dispositivo downstream. Quando o dispositivo é autenticado, o Hub IoT verifica se as duas chaves correspondem. Não é necessário criar certificados adicionais para usar a autenticação de chave simétrica.

    Esse método é mais rápido de começar se você estiver testando gateways em um cenário de desenvolvimento ou teste.

  • Autenticação autoassinada X.509: às vezes chamada de autenticação de impressão digital, porque você compartilha a impressão digital do certificado X.509 do dispositivo com o Hub IoT.

    A autenticação de certificado é recomendada para dispositivos em cenários de produção.

  • Autenticação assinada pela CA X.509: carregue o certificado da autoridade de certificação raiz no Hub IoT. Quando os dispositivos apresentam seu certificado X.509 para autenticação, o Hub IoT verifica se ele pertence a uma cadeia de confiança assinada pelo mesmo certificado de autoridade de certificação raiz.

    A autenticação de certificado é recomendada para dispositivos em cenários de produção.

Autenticação de chave simétrica

A autenticação de chave simétrica, ou autenticação de chave de acesso compartilhado, é a maneira mais simples de autenticar com o Hub IoT. Com a autenticação de chave simétrica, uma chave base64 é associada ao seu ID de dispositivo IoT no Hub IoT. Você inclui essa chave em seus aplicativos IoT para que seu dispositivo possa apresentá-la quando se conectar ao Hub IoT.

Adicione um novo dispositivo IoT em seu hub IoT, usando o portal do Azure, a CLI do Azure ou a extensão IoT para Visual Studio Code. Lembre-se de que os dispositivos downstream precisam ser identificados no Hub IoT como dispositivos IoT comuns, não como dispositivos IoT Edge.

Ao criar a nova identidade do dispositivo, forneça as seguintes informações:

  • Crie um ID para o seu dispositivo.

  • Selecione Chave simétrica como o tipo de autenticação.

  • Selecione Definir um dispositivo pai e selecione o dispositivo de gateway IoT Edge pelo qual esse dispositivo downstream se conectará. Você sempre pode mudar o pai mais tarde.

    Captura de ecrã de como criar um ID de dispositivo com autorização de chave simétrica no portal do Azure.

    Nota

    A configuração do dispositivo pai costumava ser uma etapa opcional para dispositivos downstream que usam autenticação de chave simétrica. No entanto, a partir do IoT Edge versão 1.1.0, cada dispositivo downstream deve ser atribuído a um dispositivo pai.

    Você pode configurar o hub IoT Edge para voltar ao comportamento anterior definindo a variável de ambiente AuthenticationMode como o valor CloudAndScope.

Você também pode usar a extensão IoT para a CLI do Azure para concluir a mesma operação. O exemplo a seguir usa o comando az iot hub device-identity para criar um novo dispositivo IoT com autenticação de chave simétrica e atribuir um dispositivo pai:

az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}

Gorjeta

Você pode listar as propriedades do dispositivo, incluindo o escopo do dispositivo, usando az iot hub device-identity list --hub-name {iothub name}o .

Em seguida, recupere e modifique a cadeia de conexão para que seu dispositivo saiba se conectar por meio de seu gateway.

Autenticação autoassinada X.509

Para autenticação autoassinada X.509, às vezes referida como autenticação de impressão digital, você precisa criar certificados para colocar em seu dispositivo downstream. Esses certificados têm uma impressão digital que você compartilha com o Hub IoT para autenticação.

  1. Usando seu certificado de autoridade de certificação, crie dois certificados de dispositivo (primário e secundário) para o dispositivo downstream.

    Se você não tiver uma autoridade de certificação para criar certificados X.509, poderá usar os scripts de certificado de demonstração do IoT Edge para Criar certificados de dispositivo downstream. Siga as etapas para criar certificados autoassinados. Use o mesmo certificado de autoridade de certificação raiz que gerou os certificados para seu dispositivo de gateway.

    Se você criar seus próprios certificados, verifique se o nome do assunto do certificado do dispositivo está definido como a ID do dispositivo que você usa ao registrar o dispositivo IoT no Hub IoT do Azure. Essa configuração é necessária para autenticação.

  2. Recupere a impressão digital SHA1 (chamada de impressão digital na interface do Hub IoT) de cada certificado, que é uma cadeia de caracteres hexadecimais de 40. Use o seguinte comando openssl para visualizar o certificado e encontrar a impressão digital:

    • Windows:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
      
    • Linux:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
      

    Execute este comando duas vezes, uma para o certificado primário e outra para o certificado secundário. Você fornece impressões digitais para ambos os certificados quando registra um novo dispositivo IoT usando certificados X.509 autoassinados.

  3. Navegue até seu hub IoT no portal do Azure e crie uma nova identidade de dispositivo IoT com os seguintes valores:

    • Forneça a ID do dispositivo que corresponde ao nome do assunto dos certificados do dispositivo.
    • Selecione X.509 Autoassinado como o tipo de autenticação.
    • Cole as cadeias de caracteres hexadecimais copiadas dos certificados primários e secundários do dispositivo.
    • Selecione Definir um dispositivo pai e escolha o dispositivo de gateway IoT Edge pelo qual esse dispositivo downstream se conectará. Você sempre pode mudar o pai mais tarde.

    Captura de ecrã que mostra como criar um ID de dispositivo com uma autorização autoassinada X.509 no portal do Azure.

  4. Copie os certificados de dispositivo primário e secundário e suas chaves para qualquer local no dispositivo downstream. Mova também uma cópia do certificado de autoridade de certificação raiz compartilhada que gerou o certificado de dispositivo de gateway e os certificados de dispositivo downstream.

    Você fará referência a esses arquivos de certificado em qualquer aplicativo no dispositivo downstream que se conecte ao Hub IoT. Você pode usar um serviço como o Azure Key Vault ou uma função como o protocolo de cópia segura para mover os arquivos de certificado.

  5. Dependendo do seu idioma preferido, analise exemplos de como os certificados X.509 podem ser referenciados em aplicativos IoT:

Você também pode usar a extensão IoT para a CLI do Azure para concluir a mesma operação de criação de dispositivo. O exemplo a seguir usa o comando az iot hub device-identity para criar um novo dispositivo IoT com autenticação autoassinada X.509 e atribui um dispositivo pai:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

Gorjeta

Você pode listar as propriedades do dispositivo, incluindo o escopo do dispositivo, usando az iot hub device-identity list --hub-name {iothub name}o .

Em seguida, recupere e modifique a cadeia de conexão para que seu dispositivo saiba se conectar por meio de seu gateway.

Autenticação assinada por CA X.509

Para autenticação assinada pela autoridade de certificação (CA) X.509, você precisa de um certificado de autoridade de certificação raiz registrado no Hub IoT que você usa para assinar certificados para seu dispositivo downstream. Qualquer dispositivo que use um certificado emitido pelo certificado de autoridade de certificação raiz ou qualquer um de seus certificados intermediários terá permissão para autenticação.

Esta seção é baseada na série de tutoriais de certificados do Hub IoT X.509. Consulte Noções básicas sobre criptografia de chave pública e infraestrutura de chave pública X.509 para obter a introdução desta série.

  1. Usando seu certificado de autoridade de certificação, crie dois certificados de dispositivo (primário e secundário) para o dispositivo downstream.

    Se você não tiver uma autoridade de certificação para criar certificados X.509, poderá usar os scripts de certificado de demonstração do IoT Edge para Criar certificados de dispositivo downstream. Siga as etapas para criar certificados assinados por CA. Use o mesmo certificado de autoridade de certificação raiz que gerou os certificados para seu dispositivo de gateway.

  2. Siga as instruções na seção Demonstrar prova de posse de Configurar a segurança X.509 em seu hub IoT do Azure. Nessa seção, execute as seguintes etapas:

    1. Carregue um certificado de autoridade de certificação raiz. Se você estiver usando os certificados de demonstração, a autoridade de certificação raiz será <path>/certs/azure-iot-test-only.root.ca.cert.pem.

    2. Verifique se você possui esse certificado de autoridade de certificação raiz.

  3. Siga as instruções na seção Criar um dispositivo em seu Hub IoT de Configurar a segurança X.509 em seu hub IoT do Azure. Nessa seção, execute as seguintes etapas:

    1. Adicione um novo dispositivo. Forneça um nome minúsculo para a ID do dispositivo e escolha o tipo de autenticação X.509 CA Signed.

    2. Defina um dispositivo pai. Selecione Definir um dispositivo pai e escolha o dispositivo de gateway do IoT Edge que fornecerá a conexão com o Hub IoT.

  4. Crie uma cadeia de certificados para o seu dispositivo a jusante. Use o mesmo certificado de autoridade de certificação raiz que você carregou no Hub IoT para criar essa cadeia. Use o mesmo ID de dispositivo minúsculo que você deu à identidade do dispositivo no portal.

  5. Copie o certificado e as chaves do dispositivo para qualquer local no dispositivo downstream. Mova também uma cópia do certificado de autoridade de certificação raiz compartilhada que gerou o certificado de dispositivo de gateway e os certificados de dispositivo downstream.

    Você fará referência a esses arquivos em qualquer aplicativo no dispositivo downstream que se conecte ao Hub IoT. Você pode usar um serviço como o Azure Key Vault ou uma função como o protocolo de cópia segura para mover os arquivos de certificado.

  6. Dependendo do seu idioma preferido, analise exemplos de como os certificados X.509 podem ser referenciados em aplicativos IoT:

Você também pode usar a extensão IoT para a CLI do Azure para concluir a mesma operação de criação de dispositivo. O exemplo a seguir usa o comando az iot hub device-identity para criar um novo dispositivo IoT com autenticação assinada por CA X.509 e atribui um dispositivo pai:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_ca

Gorjeta

Você pode listar as propriedades do dispositivo, incluindo o escopo do dispositivo, usando az iot hub device-identity list --hub-name {iothub name}o .

Em seguida, recupere e modifique a cadeia de conexão para que seu dispositivo saiba se conectar por meio de seu gateway.

Recuperar e modificar a cadeia de conexão

Depois de criar uma identidade de dispositivo IoT no portal, você pode recuperar suas chaves primárias ou secundárias. Uma dessas chaves precisa ser incluída na cadeia de conexão que os aplicativos usam para se comunicar com o Hub IoT. Para autenticação de chave simétrica, o Hub IoT fornece a cadeia de conexão totalmente formada nos detalhes do dispositivo para sua conveniência. Você precisa adicionar informações adicionais sobre o dispositivo de gateway à cadeia de conexão.

As cadeias de conexão para dispositivos a jusante precisam dos seguintes componentes:

  • O hub IoT ao qual o dispositivo se conecta: Hostname={iothub name}.azure-devices.net
  • O ID do dispositivo registrado no hub: DeviceID={device ID}
  • O método de autenticação, seja chave simétrica ou certificados X.509
    • Se estiver usando a autenticação de chave simétrica, forneça a chave primária ou secundária: SharedAccessKey={key}
    • Se estiver usando a autenticação de certificado X.509, forneça um sinalizador: x509=true
  • O dispositivo de gateway através do qual o dispositivo se conecta. Forneça o valor do nome do host do arquivo de configuração do dispositivo de gateway IoT Edge: GatewayHostName={gateway hostname}

Tudo junto, uma cadeia de conexão completa se parece com:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

Ou:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice

Graças à relação pai/filho, você pode simplificar a cadeia de conexão chamando o gateway diretamente como o host de conexão. Por exemplo:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

Você usará essa cadeia de conexão modificada no próximo artigo da série de gateway transparente.

Próximos passos

Neste ponto, você tem um dispositivo IoT Edge registrado com seu hub IoT e configurado como um gateway transparente. Você também tem um dispositivo downstream registrado com seu hub IoT e apontando para seu dispositivo de gateway.

Em seguida, você precisa configurar seu dispositivo downstream para confiar no dispositivo de gateway e conectar-se a ele com segurança. Continue para o próximo artigo da série de gateway transparente, Conectar um dispositivo downstream a um gateway do Azure IoT Edge.