Criar e providenciar um dispositivo IoT Edge no Linux utilizando certificados X.509

Aplica-se a:yes icon IoT Edge 1.1 Outras versões:IoT Edge 1.2

Aplica-se a:yes icon IoT Edge 1.2 Outras versões:IoT Edge 1.1

Este artigo fornece instruções de ponta a ponta para registar e fornecer um dispositivo Linux IoT Edge, incluindo a instalação do IoT Edge.

Todos os dispositivos que se ligam a um hub IoT têm um ID de dispositivo que é usado para rastrear comunicações nuvem-a-dispositivo ou dispositivo-a-nuvem. Configura um dispositivo com as suas informações de ligação, que inclui o nome de anfitrião do hub IoT, o ID do dispositivo e a informação que o dispositivo utiliza para autenticar no IoT Hub.

Os passos deste artigo passam por um processo chamado provisionamento manual, onde se conecta um único dispositivo ao seu hub IoT. Para o provisionamento manual, tem duas opções para autenticar dispositivos IoT Edge:

  • Teclas simétricas: Quando cria uma nova identidade do dispositivo no IoT Hub, o serviço cria duas teclas. Coloca-se uma das chaves no dispositivo e apresenta a chave do IoT Hub ao autenticar.

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

  • X.509 auto-assinado: Cria dois certificados de identidade X.509 e coloca-os no dispositivo. Quando cria uma nova identidade do dispositivo no IoT Hub, fornece impressões digitais de ambos os certificados. Quando o dispositivo autentica o IoT Hub, apresenta um certificado e o IoT Hub verifica se o certificado corresponde à sua impressão digital.

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

Este artigo abrange a utilização de certificados X.509 como método de autenticação. Se pretender utilizar teclas simétricas, consulte Criar e forre um dispositivo IoT Edge no Linux utilizando teclas simétricas.

Nota

Se tiver muitos dispositivos para configurar e não quiser providenciar manualmente cada um deles, utilize um dos seguintes artigos para saber como funciona o IoT Edge com o serviço de fornecimento de dispositivos IoT Hub:

Pré-requisitos

Este artigo abrange o registo do seu dispositivo IoT Edge e a instalação do IoT Edge nele. Estas tarefas têm diferentes pré-requisitos e utilidades usadas para as realizar. Certifique-se de ter todos os pré-requisitos cobertos antes de prosseguir.

Ferramentas de gestão de dispositivos

Pode utilizar o portal Azure, Visual Studio Code ou Azure CLI para os passos para registar o seu dispositivo. Cada utilidade tem os seus próprios pré-requisitos:

Um hub IoT gratuito ou padrão na sua subscrição Azure.

Requisitos dos dispositivos

Um dispositivo X64, ARM32 ou ARM64 Linux.

A Microsoft publica pacotes de instalação para uma variedade de sistemas operativos.

Para obter as informações mais recentes sobre quais os sistemas operativos que são atualmente suportados para cenários de produção, consulte os sistemas suportados Azure IoT Edge.

Gerar certificados de identidade de dispositivo

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

Quando fornece um dispositivo IoT Edge com certificados X.509, utilize o que é chamado de certificado de identidade do dispositivo. Este certificado é utilizado apenas para o fornecimento de um dispositivo IoT Edge e para autenticar o dispositivo com O Azure IoT Hub. É um certificado de folha que não assina outros certificados. O certificado de identidade do dispositivo é separado dos certificados da Autoridade de Certificados (CA) que o dispositivo IoT Edge apresenta a módulos ou dispositivos a jusante para verificação.

Para a autenticação do certificado X.509, as informações de autenticação de cada dispositivo são fornecidas sob a forma de impressões digitais retiradas dos certificados de identidade do seu dispositivo. Estas impressões digitais são dadas ao IoT Hub no momento do registo do dispositivo para que o serviço possa reconhecer o dispositivo quando este se ligar.

Para obter mais informações sobre como os certificados de CA são usados em dispositivos IoT Edge, consulte como a Azure IoT Edge utiliza certificados.

Precisa dos seguintes ficheiros para o provisionamento manual com X.509:

  • Dois dos certificados de identidade do dispositivo com os seus certificados-chave privados correspondentes em formatos .cer ou .pem.

    Um conjunto de ficheiros certificado/chave é fornecido ao tempo de execução do IoT Edge. Quando criar certificados de identidade do dispositivo, desa um nome comum de certificado (CN) com o ID do dispositivo que pretende que o dispositivo tenha no seu hub IoT.

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

    Os valores de impressão digital são caracteres de 40 hexáxolas para hashes SHA-1 ou caracteres de 64 hexáxolas para hashes SHA-256. Ambas as impressões digitais são fornecidas ao IoT Hub no momento do registo do dispositivo.

Se não tiver certificados disponíveis, pode criar certificados de demonstração para testar as funcionalidades do dispositivo IoT Edge. Siga as instruções nesse artigo para configurar scripts de criação de certificados, criar um certificado de CA raiz e, em seguida, criar dois certificados de identidade do dispositivo IoT Edge.

Uma forma de recuperar a impressão digital de um certificado é com o seguinte comando de abertura:

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

Registar o seu dispositivo

Pode utilizar o portal Azure, Visual Studio Code ou Azure CLI para registar o seu dispositivo, dependendo da sua preferência.

No seu hub IoT no portal Azure, os dispositivos IoT Edge são criados e geridos separadamente de dispositivos IoT que não estão ativados pela borda.

  1. Inscreva-se no portal Azure e navegue até ao seu hub IoT.

  2. No painel esquerdo, selecione IoT Edge no menu e, em seguida, selecione Adicione um dispositivo IoT Edge.

    Screenshot of how to add an I o T Edge device from the Azure portal.

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

    • Crie um ID do dispositivo descritivo. Tome nota deste ID do dispositivo, pois irá usá-lo mais tarde.
    • Selecione X.509 Auto-Assinado como o tipo de autenticação.
    • Forneça as impressões digitais do certificado de identidade primário e secundário. Os valores de impressão digital são caracteres de 40 hexáxolas para hashes SHA-1 ou caracteres de 64 hexáxolas para hashes SHA-256.
  4. Selecione Guardar.

Agora que tem um dispositivo registado no IoT Hub, recupere as informações que utiliza para completar a instalação e o fornecimento do tempo de execução do IoT Edge.

Ver dispositivos registados e recuperar informações sobre o fornecimento

Os dispositivos que utilizam a autenticação do certificado X.509 precisam do seu nome de hub IoT, do nome do dispositivo e dos seus ficheiros de certificados para completar a instalação e o fornecimento do tempo de execução IoT Edge.

Todos os dispositivos ativados por arestas que se ligam ao seu hub IoT estão listados na página IoT Edge .

Screenshot of how to view all I o T Edge devices in your IoT hub.

Instalar borda IoT

Nesta secção, prepare o seu Linux VM ou dispositivo físico para ioT Edge. Depois, instala-se o IoT Edge.

Primeiro, executar os seguintes comandos para adicionar o repositório de pacotes e, em seguida, adicionar a chave de assinatura do pacote microsoft à sua lista de chaves fidedignas.

A instalação pode ser feita com alguns comandos. Abra um terminal e executar os seguintes comandos:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Nota

Os pacotes de software Azure IoT Edge estão sujeitos aos termos de licença localizados em cada pacote (usr/share/doc/{package-name} ou ao LICENSE diretório). Leia os termos da licença antes de utilizar uma embalagem. A sua instalação e utilização de um pacote constitui a sua aceitação destes termos. Se não concordar com os termos da licença, não use o pacote.

Instale um motor de contentores

O Azure IoT Edge conta com um tempo de funcionamento do recipiente compatível com OCI. Para cenários de produção, recomendamos que utilize o motor Moby. O motor Moby é o único motor de contentores oficialmente suportado com IoT Edge. As imagens do contentor Estivador CE/EE são compatíveis com o tempo de execução da Moby.

Instale o motor Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Uma vez instalado com sucesso o motor Moby, configuure-o para utilizar local o controlador de registo como mecanismo de registo. Para saber mais sobre a configuração de registo, consulte a Lista de Verificação de Implementação de Produção.

  • Crie ou abra o ficheiro config do Docker Daemon em /etc/docker/daemon.json.

  • Desatrei o controlador de registo predefinido ao local controlador de registo registador, como mostra o exemplo abaixo.

       {
          "log-driver": "local"
       }
    
  • Reinicie o motor do recipiente para que as alterações entrem em vigor.

    Dica

    Se tiver erros ao instalar o motor de contentor moby, verifique se o seu kernel Linux tem compatibilidade com a Moby. Alguns fabricantes de dispositivos incorporados enviam imagens de dispositivos que contêm núcleos Linux personalizados sem as características necessárias para a compatibilidade do motor do contentor. Executar o seguinte comando, que utiliza o script check-config fornecido pela Moby, para verificar a sua configuração do núcleo:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Na saída do script, verifique se todos os itens estão ativados Generally NecessaryNetwork Drivers . Se estiver a perder funcionalidades, ative-as reconstruindo o seu núcleo a partir da fonte e selecionando os módulos associados para inclusão no núcleo apropriado .config. Da mesma forma, se estiver a utilizar um gerador de configuração de núcleo como defconfig ou menuconfig, encontre e ative as respetivas funcionalidades e reconstrua o seu núcleo em conformidade. Depois de ter implantado o seu kernel recentemente modificado, volte a executar o script check-config para verificar se todas as funcionalidades necessárias foram ativadas com sucesso.

Instalar o runtime do IoT Edge

O daemon de segurança IoT Edge fornece e mantém os padrões de segurança no dispositivo IoT Edge. O daemon começa em cada bota e botas armadilhas do dispositivo iniciando o resto do tempo de execução IoT Edge.

Os passos nesta secção representam o processo típico para instalar a versão mais recente num dispositivo que tem ligação à Internet. Se precisar de instalar uma versão específica, como uma versão pré-lançamento, ou precisar de ser instalada offline, siga os passos de instalação offline ou de versão específica mais tarde neste artigo.

Instale a versão 1.1.* do IoT Edge juntamente com o pacote de sedos de libiothsm :

sudo apt-get update; \
  sudo apt-get install iotedge

Nota

IoT Edge versão 1.1 é o ramo de suporte a longo prazo do IoT Edge. Se estiver a executar uma versão mais antiga, recomendamos a instalação ou atualização para o patch mais recente, uma vez que as versões mais antigas já não são suportadas.

O serviço IoT Edge fornece e mantém padrões de segurança no dispositivo IoT Edge. O serviço começa em todas as botas e botas do dispositivo iniciando o resto do tempo de funcionamento do IoT Edge.

O serviço de identidade IoT foi introduzido juntamente com a versão 1.2 do IoT Edge. Este serviço trata do fornecimento e gestão de identidade para ioT Edge e para outros componentes do dispositivo que precisam de comunicar com o IoT Hub.

Os passos nesta secção representam o processo típico para instalar a versão mais recente num dispositivo que tem ligação à Internet. Se precisar de instalar uma versão específica, como uma versão pré-lançamento, ou precisar de ser instalada offline, siga os passos de instalação offline ou de versão específica mais tarde neste artigo.

Nota

Os passos desta secção mostram-lhe como instalar a versão 1.2 do IoT Edge.

Se já tem um dispositivo IoT Edge a executar uma versão mais antiga e pretende fazer upgrade para 1.2, utilize os passos em Atualizar o daemon de segurança IoT Edge e o tempo de execução. A versão 1.2 é suficientemente diferente das versões anteriores do IoT Edge que são necessárias medidas específicas para atualizar.

Instale a versão mais recente do IoT Edge e o pacote de serviço de identidade IoT:

sudo apt-get update; \
  sudo apt-get install aziot-edge defender-iot-micro-agent-edge

O pacote defender-iot-micro-agente-edge inclui o Microsoft Defender para micro-agente de segurança IoT que fornece visibilidade de ponta na gestão da postura de segurança, vulnerabilidades, deteção de ameaças, gestão de frotas e muito mais para ajudá-lo a proteger os seus dispositivos IoT Edge. Recomenda-se instalar o micro-agente com o agente Edge para permitir a monitorização e endurecimento de segurança dos seus dispositivos Edge. Para saber mais sobre o Microsoft Defender para IoT, consulte o Que é o Microsoft Defender para IoT para os construtores de dispositivos.

Fornecimento do dispositivo com a sua identidade em nuvem

Agora que o motor de contentores e o tempo de funcionaamento do IoT Edge estão instalados no seu dispositivo, está pronto para o próximo passo, que é configurar o dispositivo com a sua identidade em nuvem e informações de autenticação.

No dispositivo IoT Edge, abra o ficheiro de configuração.

sudo nano /etc/iotedge/config.yaml

Encontre a secção de configurações de provisionamento do ficheiro e descompromete a configuração manual de provisionamento utilizando uma secção de certificado de identidade X.509 . Certifique-se de que quaisquer outras secções de provisionamento são comentadas. Certifique-se de que o provisionamento: a linha não tem espaço branco anterior e que os itens aninhados são recortados por dois espaços.

# Manual provisioning configuration using an x.509 identity certificate
provisioning:
  source: "manual"
  authentication:
    method: "x509"
    iothub_hostname: "REQUIRED_IOTHUB_HOSTNAME"
    device_id: "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"
    identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE"
    identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"

Atualizar os seguintes campos:

  • iothub_hostname: Nome de anfitrião do hub IoT a que o dispositivo se ligará. Por exemplo, {IoT hub name}.azure-devices.net.
  • device_id: A identificação que forneceu quando registou o dispositivo.
  • identity_cert: URI a um certificado de identidade no dispositivo. Por exemplo, file:///path/identity_certificate.pem.
  • identity_pk: URI para o ficheiro chave privado para o certificado de identidade fornecido. Por exemplo, file:///path/identity_key.pem.

Guarde e feche o ficheiro.

CTRL + X, Y, Enter

Depois de introduzir as informações de provisionamento no ficheiro de configuração, reinicie o daemon:

sudo systemctl restart iotedge

Crie o ficheiro de configuração para o seu dispositivo com base num ficheiro de modelo que é fornecido como parte da instalação IoT Edge.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

No dispositivo IoT Edge, abra o ficheiro de configuração.

sudo nano /etc/aziot/config.toml

Encontre a secção de Provisionamento do ficheiro e descodi as linhas para o provisionamento manual com certificado de identidade X.509. Certifique-se de que quaisquer outras secções de provisionamento são comentadas.

# Manual provisioning with x.509 certificates
[provisioning]
source = "manual"
iothub_hostname = "REQUIRED_IOTHUB_HOSTNAME"
device_id = "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"

[provisioning.authentication]
method = "x509"

identity_cert = "REQUIRED_URI_OR_POINTER_TO_DEVICE_IDENTITY_CERTIFICATE"

identity_pk = "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"

Atualizar os seguintes campos:

  • iothub_hostname: Nome de anfitrião do hub IoT a que o dispositivo se ligará. Por exemplo, {IoT hub name}.azure-devices.net.
  • device_id: A identificação que forneceu quando registou o dispositivo.
  • identity_cert: URI a um certificado de identidade no dispositivo, por exemplo: file:///path/identity_certificate.pem. Ou, dinamicamente, emite o certificado utilizando a EST ou uma autoridade de certificados locais.
  • identity_pk: URI ao ficheiro de chave privada para o certificado de identidade fornecido, por exemplo: file:///path/identity_key.pem. Ou, forneça um PKCS#11 URI e, em seguida, forneça as suas informações de configuração na secção PKCS#11 mais tarde no ficheiro config.

Guarde e feche o ficheiro.

CTRL + X, Y, Enter

Depois de introduzir as informações de provisionamento no ficheiro de configuração, aplique as suas alterações:

sudo iotedge config apply

Verifique a configuração bem sucedida

Verifique se o tempo de funcionaamento foi instalado com sucesso e configurado no seu dispositivo IoT Edge.

Dica

Precisa de privilégios elevados para executar os comandos iotedge. Depois de terminar sessão do seu computador e iniciar sessão novamente pela primeira vez depois de instalar o runtime do IoT Edge, as suas permissões são atualizadas automaticamente. Até lá, use sudo na frente dos comandos.

Verifique se o serviço de sistema IoT Edge está em funcionamento.

sudo systemctl status iotedge
sudo iotedge system status

Uma resposta de estado bem sucedida é Ok.

Se precisar de resolver problemas relacionados com o serviço, obtenha os registos do serviço.

journalctl -u iotedge
sudo iotedge system logs

Utilize a check ferramenta para verificar a configuração e o estado de ligação do dispositivo.

sudo iotedge check

Dica

Utilize sempre sudo para executar a ferramenta de verificação, mesmo depois de as suas permissões serem atualizadas. A ferramenta necessita de privilégios elevados para aceder ao ficheiro config para verificar o estado da configuração.

Veja todos os módulos em execução no seu dispositivo IoT Edge. Quando o serviço começar pela primeira vez, só deverá ver o módulo edgeAgent a funcionar. O módulo EdgeAgent funciona por predefinição e ajuda a instalar e iniciar quaisquer módulos adicionais que implemente no seu dispositivo.

sudo iotedge list

Quando criar um novo dispositivo IoT Edge, apresentará o código 417 -- The device's deployment configuration is not set de estado no portal Azure. Este estado é normal e significa que o dispositivo está pronto para receber uma colocação do módulo.

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

Os passos nesta secção são para cenários não abrangidos pelas etapas de instalação padrão. Isto pode incluir:

  • Instale ioT Edge enquanto offline
  • Instale uma versão de candidato de lançamento

Utilize os passos nesta secção se pretender instalar uma versão específica do tempo de execução Azure IoT Edge que não está disponível através de apt-get install. A lista de pacotes da Microsoft contém apenas um conjunto limitado de versões recentes e suas sub-versões, pelo que estes passos são para quem pretenda instalar uma versão mais antiga ou uma versão de candidato de lançamento.

Utilizando comandos curl, pode direcionar os ficheiros de componentes diretamente do repositório IoT Edge GitHub.

  1. Navegue para as versões Azure IoT Edge e encontre a versão de lançamento que pretende atingir.

  2. Expandir a secção Ativos para esta versão.

  3. Cada lançamento deve ter novos ficheiros para o daemon de segurança IoT Edge e o hsmlib. Se vai instalar o IoT Edge num dispositivo offline, descarregue estes ficheiros antes do tempo. Caso contrário, utilize os seguintes comandos para atualizar esses componentes.

    1. Encontre o ficheiro libiothsm-std que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito no link do ficheiro e copie o endereço de link.

    2. Utilize o link copiado no seguinte comando para instalar a versão do hsmlib:

      curl -L libiothsm-std_link_here -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Encontre o ficheiro iotedge que corresponda à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito no link do ficheiro e copie o endereço de link.

    4. Utilize o link copiado no seguinte comando para instalar a versão do daemon de segurança IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

Nota

Se o seu dispositivo estiver atualmente a executar a versão 1.1 ou mais antiga do IoT Edge, desinstale as embalagens iotedge e libiothsm-std antes de seguir os passos nesta secção. Para mais informações, consulte atualização de 1.0 ou 1.1 a 1.2.

  1. Navegue para as versões Azure IoT Edge e encontre a versão de lançamento que pretende atingir.

  2. Expandir a secção Ativos para esta versão.

  3. Cada lançamento deve ter novos ficheiros para ioT Edge e o serviço de identidade. Se vai instalar o IoT Edge num dispositivo offline, descarregue estes ficheiros antes do tempo. Caso contrário, utilize os seguintes comandos para atualizar esses componentes.

    1. Encontre o ficheiro de serviço de identidade aziot que corresponda à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito no link do ficheiro e copie o endereço de link.

    2. Utilize o link copiado no seguinte comando para instalar essa versão do serviço de identidade:

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      
    3. Encontre o ficheiro de borda aziot que corresponde à arquitetura do seu dispositivo IoT Edge. Clique com o botão direito no link do ficheiro e copie o endereço de link.

    4. Utilize o link copiado no seguinte comando para instalar a versão do IoT Edge.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

Agora que o motor de contentores e o tempo de funcionaamento do IoT Edge estão instalados no seu dispositivo, está pronto para o próximo passo, que é providenciar a identidade do dispositivo com a sua identidade em nuvem.

Desinstalar IoT Edge

Se pretender remover a instalação IoT Edge do seu dispositivo, utilize os seguintes comandos.

Remova o runtime do IoT Edge.

sudo apt-get remove iotedge
sudo apt-get remove aziot-edge

Utilize a --purge bandeira se pretender eliminar todos os ficheiros associados ao IoT Edge, incluindo os seus ficheiros de configuração. Deixe esta bandeira de fora se pretender reinstalar o IoT Edge e utilizar as mesmas informações de configuração no futuro.

Quando o tempo de funcionaamento do IoT Edge é removido, quaisquer recipientes que tenha criado são parados mas ainda existem no seu dispositivo. Veja todos os recipientes para ver quais permanecem.

sudo docker ps -a

Elimine os recipientes do seu dispositivo, incluindo os dois recipientes de tempo de execução.

sudo docker rm -f <container name>

Por fim, retire o tempo de funcionaamento do recipiente do seu dispositivo.

sudo apt-get remove --purge moby-cli
sudo apt-get remove --purge moby-engine

Passos seguintes

Continue a implementar módulos IoT Edge para aprender a implantar módulos no seu dispositivo.