Criar e provisionar um dispositivo IoT Edge para Linux no Windows usando certificados X.509
Aplica-se a: IoT Edge 1.4
Importante
Azure IoT Edge 1.5 LTS e IoT Edge 1.4 são versões com suporte. O IoT Edge 1.4 LTS chegará ao fim do serviço em 12 de novembro de 2024. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.
Este artigo fornece instruções de ponta a ponta para registrar e provisionar um dispositivo do IoT Edge para Linux no Windows dispositivo.
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 IoT Edge para Linux em um dispositivo 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 para Linux no Windows. 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 seus próprios pré-requisitos ou pode precisar ser instalado:
Um hub IoT gratuito ou padrão na assinatura do Azure.
Requisitos do dispositivo
Um dispositivo Windows com os seguintes requisitos mínimos:
Requisitos do Sistema
- Windows 101/11 (Pro, Enterprise, IoT Enterprise)
- Windows Server 20191/2022
1 Windows 10 e Windows Server 2019, no mínimo build 17763 com todas as atualizações cumulativas atuais instaladas.
Requisitos de hardware
- Memória livre mínima: 1 GB
- Espaço em disco livre mínimo: 10 GB
Suporte à virtualização
- No Windows 10, habilite o Hyper-V. Para obter mais informações, confira Instalar o Hyper-V no Windows 10.
- No Windows Server, instale a função Hyper-V e crie um comutador de rede padrão. Para mais informações, confira Virtualização aninhada para Azure IoT Edge para Linux no Windows.
- Em uma máquina virtual, configure a virtualização aninhada. Para obter mais informações, confira: virtualização aninhada.
Suporte à rede
- O não Windows Server vem com um comutador padrão. Para implantar o EFLOW em um dispositivo Windows Server, crie um comutador virtual. Para obter mais informações, confira Criar um comutador virtual para Linux no Windows.
- As versões do Windows Desktop vêm com um comutador padrão que pode ser usado para a instalação do EFLOW. Se necessário, você pode criar o seu comutador virtual personalizado.
Dica
Se você quer usar os módulos do Linux acelerados por GPU na implantação do Azure IoT Edge para Linux no Windows, há várias opções de configuração a serem consideradas.
Você precisará instalar os drivers corretos, dependendo da arquitetura da GPU, e talvez precisará de acesso a um build do Programa Windows Insider. Para determinar suas necessidades de configuração e atender a esses pré-requisitos, confira Aceleração de GPU do Azure IoT Edge para Linux no Windows.
Reserve tempo para atender aos pré-requisitos de aceleração de GPU agora. Será necessário reiniciar o processo de instalação se você decidir que deseja a aceleração de GPU durante a instalação.
Ferramentas para desenvolvedores
Prepare o dispositivo de destino para a instalação do Azure IoT Edge para Linux no Windows e a implantação da máquina virtual do Linux:
Defina a política de execução no dispositivo de destino como
AllSigned
. Você pode verificar a política de execução atual em um prompt do PowerShell com privilégios elevados usando o seguinte comando:Get-ExecutionPolicy -List
Se a política de execução do
local machine
não forAllSigned
, você poderá definir a política de execução usando:Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Para obter mais informações sobre o módulo do PowerShell do Azure IoT Edge para Linux no Windows, confira a referência de funções do PowerShell.
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 que é chamado de 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 folha 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 em formatos .cer ou .pem. Você precisa de dois certificados de identidade do dispositivo para rotação de certificado. Uma prática recomendada é preparar dois certificados de identidade de dispositivo diferentes com datas de validade diferentes. Se um certificado expirar, o outro ainda será válido e dará tempo para girar o certificado expirado.
Um conjunto de arquivos de certificado e 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. O Hub IoT requer duas impressões digitais ao registrar um dispositivo do IoT Edge. Você pode usar apenas um certificado para registro. Para usar um único certificado, defina a mesma impressão digital do certificado para as impressões digitais primária e secundária ao registrar o 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.
Uma maneira de recuperar a impressão digital de um certificado é com o seguinte comando openssl:
openssl x509 -in <certificate filename>.pem -text -fingerprint
A impressão digital está incluída na saída desse comando. Por exemplo:
SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
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 nesse artigo para configurar scripts de criação de certificado, criar um certificado de autoridade de certificação raiz e criar um certificado de identidade de dispositivo do IoT Edge. Para testar, você pode criar um certificado de identidade de dispositivo único e usar a mesma impressão digital para valores de impressão digital primária e secundária ao registrar o dispositivo no Hub IoT.
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 no portal do Azure, os dispositivos do IoT Edge são criados e gerenciados separadamente de dispositivos IoT que não estão habilitados para borda.
Entre no Portal do Azure e navegue até o Hub IoT.
No painel esquerdo, selecione Dispositivos no menu e, em seguida, Adicionar dispositivo.
Na página Criar um dispositivo, forneça as seguintes informações:
- Crie uma ID do dispositivo descritivo. Anote essa ID do dispositivo, pois você a usará mais tarde.
- 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. O portal do Azure dá suporte somente a valores hexadecimal. Remova separadores de coluna e espaços dos valores de impressão digital antes de inseri-los no portal. Por exemplo,
D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
é inserido comoD268D9049F1A4D6AFD8477687BC633C032375112
.
Dica
Se você estiver testando e quiser usar um certificado, poderá usar o mesmo certificado para as impressões digitais primária e secundária.
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 dispositivos do IoT Edge.
Instalar o Edge IoT
Implante o Azure IoT Edge para Linux no Windows no dispositivo de destino.
Observação
O processo do PowerShell a seguir descreve como implantar o IoT Edge para Linux no Windows no dispositivo local. Para fazer a implantação em um dispositivo de destino remoto usando o PowerShell, use o PowerShell Remoto para estabelecer uma conexão com um dispositivo remoto e executar esses comandos remotamente no dispositivo.
Em uma sessão elevada do PowerShell, execute um dos comandos a seguir, dependendo da arquitetura do dispositivo de destino para baixar o IoT Edge para Linux no Windows.
X64/AMD64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
ARM64
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
Instale o IoT Edge para Linux no Windows em seu dispositivo.
Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
Você pode especificar diretórios personalizados de instalação do IoT Edge no Linux e no Windows e do VHDX adicionando os parâmetros
INSTALLDIR="<FULLY_QUALIFIED_PATH>"
eVHDXDIR="<FULLY_QUALIFIED_PATH>"
ao comando de instalação. Por exemplo, se você quiser usar a pasta D:\EFLOW para instalação e a pasta D:\EFLOW-VHDX para o VHDX, poderá usar o seguinte cmdlet do PowerShell.Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
Defina a política de execução no dispositivo de destino como
AllSigned
, se ainda não estiver definida. Confira os pré-requisitos do PowerShell para comandos para verificar a política de execução atual e definir a política de execução comoAllSigned
.Crie a implantação do IoT Edge para Linux no Windows. A implantação cria sua máquina virtual do Linux e instala o runtime do IoT Edge para você.
Deploy-Eflow
Dica
Por padrão, o comando
Deploy-Eflow
cria a máquina virtual Linux com 1 GB de RAM, 1 núcleo vCPU e 16 GB de espaço em disco. No entanto, os recursos necessários para a VM são dependem muito das cargas de trabalho implantadas. Se a VM não tiver memória suficiente para dar suporte às cargas de trabalho, ela não será iniciada.Você pode personalizar os recursos disponíveis da máquina virtual usando os parâmetros opcionais do comando
Deploy-Eflow
. Isso é necessário para implantar o EFLOW em um dispositivo com os requisitos mínimos de hardware.Por exemplo, o comando abaixo cria uma máquina virtual com 1 núcleo vCPU, 1 GB de RAM (representados em MB) e 2 GB de espaço em disco:
Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
Para obter informações sobre todos os parâmetros opcionais disponíveis, confira Funções do PowerShell para o IoT Edge para Linux no Windows.
Aviso
Por padrão, a máquina virtual do Linux do EFLOW não tem nenhuma configuração de DNS. As implantações que usam o DHCP tentarão obter a configuração de DNS propagada pelo servidor DHCP. Verifique a configuração de DNS para garantir a conectividade com a Internet. Para obter mais informações, confira AzEFLOW-DNS.
Você pode atribuir uma GPU à implantação para habilitar os módulos do Linux acelerados por GPU. Para obter acesso a esses recursos, você precisará instalar os pré-requisitos detalhados em Aceleração de GPU do Azure IoT Edge para Linux no Windows.
Para usar uma passagem de GPU, adicione os parâmetros gpuName, gpuPassthroughType e gpuCount ao comando
Deploy-Eflow
. Para obter informações sobre todos os parâmetros opcionais disponíveis, confira Funções do PowerShell para o IoT Edge para Linux no Windows.Aviso
Habilitar a passagem de dispositivo de hardware pode aumentar os riscos de segurança. A Microsoft recomenda um driver de mitigação de dispositivo do fornecedor da GPU, quando aplicável. Para obter mais informações, confira Implantar dispositivos gráficos usando a atribuição discreta de dispositivo.
Insira "Y" para aceitar os termos de licença.
Insira "O" ou "R" para ativar ou desativar Dados de diagnóstico opcionais, dependendo de sua preferência.
Depois que a implantação for concluída, a janela do PowerShell relatará Implantação bem-sucedida.
Após uma implantação bem-sucedida, você estará pronto para provisionar seu dispositivo.
Provisionar o dispositivo com a identidade de nuvem dele
Você está pronto para configurar seu dispositivo com suas informações de autenticação e identidade de nuvem.
Para provisionar seu dispositivo usando certificados X.509, você precisará do nome do hub IoT, da ID do dispositivo e dos caminhos absolutos para o certificado de identidade e a chave privada no computador host do Windows.
Prepare o certificado de identidade do dispositivo e a chave privada correspondente no dispositivo de destino. Saiba qual é o caminho absoluto nos dois arquivos.
Execute o comando a seguir em uma sessão do PowerShell com privilégios elevados no dispositivo de destino. Substitua o texto do espaço reservado pelos seus valores.
Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"
Para obter mais informações sobre o comando Provision-EflowVM
, confira Funções do PowerShell para o IoT Edge para Linux no Windows.
Verificar configuração bem-sucedida
Verifique se o IoT Edge para Linux no Windows foi instalado e configurado com êxito em seu dispositivo IoT Edge.
Faça logon em sua máquina virtual IoT Edge para Linux no Windows usando o seguinte comando em sua sessão do PowerShell:
Connect-EflowVm
Observação
A única conta permitida para o SSH da máquina virtual é o usuário que a criou.
Depois de fazer logon, você poderá verificar a lista de módulos do IoT Edge em execução usando o seguinte comando do Linux:
sudo iotedge list
Se você precisar solucionar problemas de serviço do IoT Edge, use os comandos do Linux a seguir.
Recupere os logs do serviço.
sudo iotedge system logs
Use a ferramenta
check
para verificar a configuração e o status de conexão do dispositivo.sudo iotedge check
Observação
Em um dispositivo recém-provisionado, você pode ver um erro relacionado ao Hub do IoT Edge:
× preparação para produção: o diretório de armazenamento do Hub do Edge é persistente no sistema de arquivos do host – erro
Não foi possível verificar o estado atual do contêiner edgeHub
Esse erro é esperado em um dispositivo recém-provisionado, pois o módulo do Hub do IoT Edge não está em execução. Para resolver o erro, no Hub IoT, defina os módulos para o dispositivo e crie uma implantação. A criação de uma implantação para o dispositivo inicia os módulos no dispositivo, incluindo o módulo Hub do IoT Edge.
Quando você cria um novo dispositivo IoT Edge, ele exibe o código de status 417 -- The device's deployment configuration is not set
no portal do Azure. Esse status é normal e significa que o dispositivo está pronto para receber uma implantação do módulo.
Desinstalar o IoT Edge para Linux no Windows
Se você quiser remover a instalação do Azure IoT Edge para Linux no Windows do dispositivo, use os comandos a seguir.
- Abra as Configurações no Windows
- Selecione Adicionar ou remover programas
- Selecione o aplicativo Azure IoT Edge
- Selecionar Desinstalar
Próximas etapas
- Prossiga para implantar módulos do IoT Edge para saber como implantar módulos em seu dispositivo.
- Saiba como gerenciar certificados em sua máquina virtual do IoT Edge para Linux no Windows e transferir arquivos do sistema operacional host para sua máquina virtual Linux.
- Saiba como configurar seus dispositivos IoT Edge para se comunicar por meio de um servidor proxy.