Criar e provisionar um dispositivo IoT Edge de Windows usando certificados X.509

Aplica-se a: ícone sim IoT Edge 1.1

Importante

IoT Edge 1.1 a data de término do suporte foi 13 de dezembro de 2022. Confira o Ciclo de Vida do Produto da Microsoft para obter informações sobre o suporte deste produto, serviço, tecnologia ou API. Para obter mais informações sobre como atualizar para a versão mais recente do IoT Edge, consulte Atualizar o IoT Edge.

Este artigo fornece instruções de ponta a ponta para registrar e provisionar um Windows IoT Edge dispositivo.

Observação

O Azure IoT Edge com contêineres do Windows não terá suporte a partir da versão 1.2 do Azure IoT Edge.

Considere o uso do novo método para executar o IoT Edge em dispositivos Windows, Azure IoT Edge para Linux no Windows.

Se você quiser usar o Azure IoT Edge para Linux no Windows, poderá seguir as etapas no guia de instruções equivalente.

Cada dispositivo que se conecta a um hub IoT tem uma identidade do dispositivo que é usada para controlar as comunicações da nuvem para dispositivo ou do dispositivo para nuvem. Você configura um dispositivo com suas informações de conexão, o que inclui o nome do host do hub IoT, a identidade do dispositivo e as informações que o dispositivo usa para autenticar no Hub IoT.

As etapas neste artigo percorrem um processo chamado provisionamento manual, no qual você conecta um único dispositivo ao seu hub IoT. No provisionamento manual, você tem duas opções para autenticar dispositivos do IoT Edge:

  • Chaves simétricas: quando você cria uma identidade do dispositivo no Hub IoT, o serviço cria duas chaves. Você coloca uma das chaves no dispositivo e apresenta a chave para o Hub IoT durante a autenticação.

    Esse método de autenticação é mais rápido para começar a usar, mas não tão seguro.

  • X.509 autoassinado: você cria dois certificados de identidade X.509 e os coloca no dispositivo. Ao criar uma nova identidade do dispositivo no Hub IoT, você fornece impressões digitais de ambos os certificados. Quando o dispositivo é autenticado no Hub IoT, ele apresenta um certificado e o Hub IoT verifica se o certificado corresponde à sua impressão digital.

    Esse método de autenticação é mais seguro e recomendado para cenários de produção.

Este artigo aborda o uso de certificados X.509 como seu método de autenticação. Se você quiser usar chaves simétricas, consulte Criar e provisionar um dispositivo de Azure IoT Edge no Windows usando chaves simétricas.

Observação

Se você tiver muitos dispositivos a serem configurados e não quiser provisionar manualmente cada um deles, use um dos artigos a seguir para saber como IoT Edge funciona com o Serviço de Provisionamento de Dispositivos no Hub IoT:

Pré-requisitos

Este artigo aborda o registro do dispositivo do IoT Edge e a instalação do IoT Edge nesse dispositivo. Essas tarefas têm diferentes pré-requisitos e utilitários usados para realizá-las. Certifique-se de que você tenha todos os pré-requisitos listados antes de continuar.

Ferramentas de gerenciamento de dispositivo

Você pode usar o portal do Azure, o Visual Studio Code ou a CLI do Azure nas etapas para registrar o dispositivo. Cada utilitário tem pré-requisitos próprios:

Um hub IoT gratuito ou padrão na assinatura do Azure.

Requisitos do dispositivo

Um dispositivo Windows.

O IoT Edge com contêineres do Windows requer o Windows versão 1809/compilação 17763, que é a compilação de suporte de longo prazo do Windows mais recente. Não deixe de revisar a lista de sistemas com suporte para ver uma lista de SKUs com suporte.

Gerar certificados de identidade do dispositivo

O provisionamento manual com certificados X.509 requer IoT Edge versão 1.0.10 ou mais recente.

Ao provisionar um dispositivo do IoT Edge com certificados X.509, você usa o certificado de identidade do dispositivo. Estes certificados são usados apenas para provisionar um dispositivo do IoT Edge e autenticar o dispositivo com o Hub IoT do Azure. É um certificado secundário que não assina outros certificados. O certificado de identidade do dispositivo é separado dos certificados de AC (autoridade de certificação) que o dispositivo do IoT Edge apresenta aos módulos ou dispositivos downstream para verificação.

Para a autenticação de certificado X.509, as informações de autenticação de cada dispositivo são fornecidas na forma de impressões digitais obtidas dos certificados de identidade do dispositivo. Essas impressões digitais são fornecidas ao Hub IoT no registro do dispositivo para que o serviço possa reconhecer o dispositivo quando ele se conectar.

Para obter mais informações sobre como os certificados AC são usados nos dispositivos do IoT Edge, consulte Entenda como o Azure IoT Edge usa certificados.

Você precisa dos seguintes arquivos para o provisionamento manual com X.509:

  • Dois certificados de identidade do dispositivo com seus certificados de chave privada correspondentes nos formatos .cer ou .pem.

    Um conjunto de arquivos de certificado/chave é fornecido para o runtime do IoT Edge. Ao criar certificados de identidade do dispositivo, defina o CN (nome comum) do certificado com a identidade do dispositivo que você deseja que o dispositivo tenha no hub IoT.

  • Impressões digitais obtidas de ambos os certificados de identidade do dispositivo.

    Os valores de impressão digital são caracteres 40-hex para hashes SHA-1 ou caracteres 64-hex para hashes SHA-256. As duas impressões digitais são fornecidas ao Hub IoT no momento do registro do dispositivo.

Se você não tiver certificados disponíveis, você poderá Criar certificados de demonstração para testar recursos do dispositivo do IoT Edge. Siga as instruções neste artigo para configurar scripts de criação de certificado, criar um certificado AC raiz e, em seguida, crie dois certificados de identidade do dispositivo do IoT Edge.

Uma maneira de recuperar a impressão digital de um certificado é com o seguinte comando openssl:

openssl x509 -in <certificate filename>.pem -text -fingerprint

Registre seu dispositivo

Você pode usar o portal do Azure, o Visual Studio Code ou a CLI do Azure para registrar seu dispositivo, dependendo da preferência.

No hub IoT do portal do Azure, os dispositivos do IoT Edge são criados e gerenciados separadamente dos dispositivos de IoT que não são habilitados para a borda.

  1. Entre no Portal do Azure e navegue até o Hub IoT.

  2. No painel esquerdo, selecione Dispositivos no menu e, em seguida, Adicionar dispositivo.

  3. Na página Criar um dispositivo, forneça as seguintes informações:

    • Crie uma ID do dispositivo descritivo. Anote a identidade desse dispositivo, pois você a usará depois.
    • Marque a caixa de seleção Dispositivo do IoT Edge.
    • Selecione X.509 autoassinado como o tipo de autenticação.
    • Forneça as impressões digitais do certificado de identidade primária e secundária. Os valores de impressão digital são caracteres 40-hex para hashes SHA-1 ou caracteres 64-hex para hashes SHA-256.
  4. Selecione Salvar.

Agora que você tem um dispositivo registrado no Hub IoT, recupere as informações que você usa para concluir a instalação e o provisionamento do runtime do IoT Edge.

Exibir dispositivos registrados e recuperar informações de provisionamento

Os dispositivos que usam a autenticação de certificado de cliente X.509 precisam do seu nome do hub IoT, seu nome do dispositivo e seus arquivos de certificado para concluir a instalação e o provisionamento do runtime do IoT Edge.

Todos os dispositivos habilitados para borda que se conectam ao hub IoT são listados na página Dispositivos. Você pode filtrar a lista por tipo de Dispositivo do Iot Edge.

Captura de tela de como exibir todos os dispositivos IoT Edge em seu hub IoT.

Instalar o Edge IoT

Nesta seção, você preparará a VM ou o dispositivo físico Windows para o IoT Edge. Em seguida, você instalará o IoT Edge.

O Azure IoT Edge depende de um runtime de contêiner compatível com OCI. O Moby, um mecanismo baseado em Moby, está incluído no script de instalação, o que significa que não há etapas adicionais para instalar o mecanismo.

Para instalar o runtime do Azure IoT Edge:

  1. Execute o PowerShell como administrador.

    Use uma sessão AMD64 do PowerShell, não o PowerShell(x86). Para saber qual tipo de sessão você está usando, execute o seguinte comando:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. Execute o comando Deploy-IoTEdge, que executa as seguintes tarefas:

    • Verifica se o computador Windows está em uma versão compatível
    • Ativa o recurso de contêineres
    • Baixa o mecanismo Moby e o runtime do IoT Edge
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. Reinicie o dispositivo, se solicitado.

Ao instalar o IoT Edge em um dispositivo, é possível usar parâmetros adicionais para modificar o processo, incluindo:

  • Tráfego direto para passar por um servidor proxy
  • Apontar o instalador para um diretório local para instalação offline

Para obter mais informações sobre esses parâmetros adicionais, consulte Scripts do PowerShell para IoT Edge com contêineres do Windows.

Provisionar o dispositivo com a identidade de nuvem dele

Agora que o mecanismo de contêiner e o runtime do IoT Edge estão instalados no dispositivo, você está pronto para a próxima etapa, que consiste na configuração do dispositivo com a identidade de nuvem e as informações de autenticação dele.

  1. No dispositivo IoT Edge, execute o PowerShell como administrador.

  2. Use o comando Initialize-IoTEdge para configurar o runtime do IoT Edge no computador.

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -ManualX509
    
    • Se você tiver baixado o script IoTEdgeSecurityDaemon.ps1 em seu dispositivo para uma instalação de versão específica ou offline, certifique-se de fazer referência à cópia local do script.

      . <path>/IoTEdgeSecurityDaemon.ps1
      Initialize-IoTEdge -ManualX509
      
  3. Quando solicitado, forneça as seguintes informações:

    • IotHubHostName: nome do host do Hub IoT ao qual o dispositivo se conectará. Por exemplo, {IoT_hub_name}.azure-devices.net.
    • DeviceId: a ID que você forneceu quando registrou o dispositivo.
    • X509IdentityCertificate: caminho absoluto para um certificado de identidade no dispositivo. Por exemplo, C:\path\identity_certificate.pem.
    • X509IdentityPrivateKey: caminho absoluto para o arquivo de chave privada do certificado de identidade fornecido. Por exemplo, C:\path\identity_key.pem.

Ao provisionar um dispositivo manualmente, é possível usar parâmetros adicionais para modificar o processo, incluindo:

  • Tráfego direto para passar por um servidor proxy
  • Declarar uma imagem de contêiner edgeAgent específica e fornecer credenciais no caso de um registro privado

Para obter mais informações sobre esses parâmetros adicionais, consulte Scripts do PowerShell para IoT Edge com contêineres do Windows.


Verificar configuração bem-sucedida

Verifique se o runtime foi instalado e configurado com êxito em seu dispositivo IoT Edge.

Verifique o status do serviço do IoT Edge.

Get-Service iotedge

Examine os logs de serviço.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

Módulos de execução da lista.

iotedge list

Instalação offline ou de versão específica (opcional)

As etapas nesta seção são destinadas a cenários não cobertos pelas etapas de instalação padrão. Isso pode incluir:

  • Instalar o IoT Edge offline
  • Instalar a versão Release Candidate
  • Instalar uma versão diferente da mais recente

Durante a instalação, três arquivos são baixados:

  • Um script do PowerShell, que contém as instruções de instalação
  • O CAB do Microsoft Azure IoT Edge, que contém o daemon de segurança (iotedged) do IoT Edge, o mecanismo de contêiner Moby e a CLI do Moby
  • Instalador do pacote redistribuível do Visual C++ (runtime de VC)

Se o dispositivo ficar offline durante a instalação ou você quiser instalar uma versão específica do IoT Edge, baixe esses arquivos antecipadamente no dispositivo. Quando for o momento da instalação, aponte o script de instalação para o diretório que contém os arquivos baixados. O instalador primeiro verifica o diretório e, em seguida, baixa somente os componentes não localizados. Se todos os arquivos estiverem disponíveis offline, será possível instalá-los sem conexão com a Internet.

  1. Para obter os arquivos de instalação mais recentes do IoT Edge e as versões anteriores, consulte Lançamentos do Azure IoT Edge.

  2. Localize a versão que será instalada e baixe os seguintes arquivos da seção Ativos das notas de versão para seu dispositivo IoT:

    • IoTEdgeSecurityDaemon.ps1
    • Microsoft-Azure-IoTEdge-amd64.cab do canal da versão 1.1.

    É importante usar o script do PowerShell na mesma versão do arquivo .cab usado, pois a funcionalidade muda para dar suporte aos recursos em cada versão.

  3. Se o arquivo .cab baixado tiver um sufixo de arquitetura, renomeie-o para apenas Microsoft-Azure-IoTEdge.cab.

  4. Opcionalmente, baixe um instalador para Visual C++ redistribuível. Por exemplo, o script do PowerShell usa esta versão: vc_redist.x64.exe. Em seu dispositivo IoT, salve o instalador na mesma pasta dos arquivos do IoT Edge.

  5. Para instalar com componentes offline, efetue dot source na cópia local do script do PowerShell.

  6. Execute o comando Deploy-IoTEdge com o parâmetro -OfflineInstallationPath. Forneça o caminho absoluto para o diretório de arquivos. Por exemplo,

    . path_to_powershell_module_here\IoTEdgeSecurityDaemon.ps1
    Deploy-IoTEdge -OfflineInstallationPath path_to_file_directory_here
    

    O comando de implantação usará todos os componentes encontrados no diretório de arquivos local fornecido. Se o arquivo .cab ou o instalador do Visual C++ estiverem ausentes, ele tentará baixá-los.

Desinstalar o IoT Edge

Para remover a instalação do IoT Edge do dispositivo Windows, use o comando Uninstall-IoTEdge em uma janela administrativa do PowerShell. Esse comando remove o runtime do IoT Edge, juntamente com a configuração existente e os dados do mecanismo Moby.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; `
Uninstall-IoTEdge

Para obter mais informações sobre as opções de desinstalação, use o comando Get-Help Uninstall-IoTEdge -full.

Próximas etapas

Prossiga para implantar módulos do IoT Edge para saber como implantar módulos em seu dispositivo.