Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
IoT Edge 1.5
Importante
O IoT Edge 1.5 LTS é a versão com suporte. O IoT Edge 1.4 LTS atingirá o fim da vida útil em 12 de novembro de 2024. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.
Este artigo fornece instruções para configurar uma conexão confiável entre dispositivos downstream e gateways transparentes do IoT Edge. Em um cenário de gateway transparente, um ou mais dispositivos enviam mensagens por meio de um único dispositivo de gateway que mantém a conexão com o Hub IoT. Neste artigo, os termos gateway e gateway IoT Edge significam um dispositivo IoT Edge configurado como um gateway transparente.
Observação
Um dispositivo downstream envia dados diretamente para a Internet ou para dispositivos de gateway (habilitados para IoT Edge ou não). Um dispositivo filho pode ser um dispositivo de downstream ou um dispositivo de gateway em uma topologia aninhada.
Você configura uma conexão de gateway transparente em três passos. Este artigo explica a terceira etapa.
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 roteá-las para o destino certo. Para essas etapas, confira Configurar um dispositivo IoT Edge para atuar como um gateway transparente.
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 por meio do dispositivo de gateway. Para essas etapas, confira Autenticar um dispositivo downstream no Hub IoT do Azure.
Conecte o dispositivo downstream ao dispositivo de gateway e comece a enviar mensagens.
Este artigo explica os componentes de conexão do dispositivo downstream, como:
- TLS (segurança da camada de transporte) e conceitos básicos do certificado
- Bibliotecas TLS que funcionam em diferentes sistemas operacionais e lidam com certificados de forma diferente
Você percorre exemplos de IoT do Azure em seu idioma preferido para fazer com que seu dispositivo envie mensagens para o gateway.
Pré-requisitos
Adquira o seguinte para preparar seu dispositivo downstream:
Um dispositivo downstream.
Esse dispositivo pode ser qualquer aplicativo ou plataforma com uma identidade criada no Hub IoT do Azure. Em muitos casos, os aplicativos usam o SDK do dispositivo IoT do Azure. Um dispositivo downstream também pode ser um aplicativo em execução no dispositivo de gateway do IoT Edge.
Posteriormente, este artigo mostra como conectar um dispositivo IoT como um dispositivo downstream. Se você quiser usar um dispositivo IoT Edge como um dispositivo downstream, consulte Conectar dispositivos do Azure IoT Edge para criar uma hierarquia (borda aninhada).
Um arquivo de certificado de AC raiz.
Esse arquivo é usado para gerar o certificado de Autoridade de Certificação do Edge em Configurar um dispositivo IoT Edge para atuar como um gateway transparente, e está disponível em seu dispositivo downstream.
Seu dispositivo downstream usa esse certificado para verificar a identidade do dispositivo de gateway. Esse certificado confiável valida as conexões TLS (segurança da camada de transporte) para o dispositivo de gateway. Para obter detalhes de uso, consulte Forneça o certificado de CA raiz.
Uma cadeia de conexão modificada que aponta para o dispositivo de gateway.
Para saber como alterar sua cadeia de conexão, consulte Autenticar um dispositivo downstream no Hub IoT do Azure.
Observação
Os dispositivos IoT registrados com o Hub IoT podem usar módulos gêmeos para isolar diferentes processos, hardware ou funções em um único dispositivo. Os gateways do IoT Edge dão suporte a conexões de módulo downstream usando autenticação de chave simétrica, mas não autenticação de certificado X.509.
Entenda os conceitos básicos do TLS e do certificado
Conectar dispositivos downstream com segurança ao IoT Edge é semelhante a outra comunicação segura de cliente e servidor pela Internet. Um cliente e um servidor se comunicam com segurança pela Internet usando segurança do protocolo TLS. O TLS usa constructos de PKI (infraestrutura de chave pública) padrão chamados certificados. O TLS é uma especificação detalhada que aborda muitos tópicos relacionados à proteção de dois pontos de extremidade. Esta seção resume os conceitos necessários para conectar dispositivos com segurança a um gateway do IoT Edge.
Quando um cliente se conecta a um servidor, o servidor apresenta uma cadeia de certificados chamada cadeia de certificados do servidor. Uma cadeia de certificados geralmente tem um certificado de AC (autoridade de certificação) raiz, um ou mais certificados de AC intermediários e o certificado do servidor. O cliente confia no servidor verificando criptograficamente toda a cadeia de certificados do servidor. Esse processo é chamado de validação da cadeia de servidores. O cliente também desafia o servidor a provar que tem a chave privada do certificado do servidor, chamada de prova de posse. Juntos, a validação da cadeia de servidores e a prova de posse são chamadas de autenticação de servidor. Para validar uma cadeia de certificados de servidor, o cliente precisa de uma cópia do certificado de AC raiz usado para emitir o certificado do servidor. Ao se conectar a sites, os navegadores vêm pré-configurados com certificados de autoridades de certificação comuns, o que torna o processo no lado do cliente transparente.
Quando um dispositivo se conecta ao Hub IoT do Azure, o dispositivo é o cliente e o serviço de nuvem do Hub IoT é o servidor. O serviço de nuvem do Hub IoT usa um certificado raiz de CA chamado Baltimore CyberTrust Root, que está disponível publicamente e amplamente utilizado. Como o certificado de AC do Hub IoT já está instalado na maioria dos dispositivos, muitas implementações de TLS (OpenSSL, Schannel, LibreSSL) o usam automaticamente durante a validação do certificado do servidor. No entanto, um dispositivo que se conecta ao Hub IoT pode ter problemas ao se conectar a um gateway do IoT Edge.
Quando um dispositivo se conecta a um gateway IoT Edge, o dispositivo downstream é o cliente e o dispositivo de gateway é o servidor. O Azure IoT Edge permite criar cadeias de certificados de gateway conforme necessário. Você pode usar um certificado de autoridade de certificação público, como o Baltimore, ou um certificado de autoridade de certificação raiz autoassinado (ou interno). Os certificados públicos de AC geralmente têm um custo, portanto, normalmente são usados em cenários de produção. Os certificados de CA autoassinados são preferidos para desenvolvimento e teste. Os certificados de demonstração são certificados de AC raiz autoassinados.
Ao usar um certificado de CA raiz autoassinado para um gateway do IoT Edge, você precisa instalá-lo ou fornecê-lo a todos os dispositivos a jusante que se conectam ao gateway.
Para saber mais sobre certificados do IoT Edge e implicações de produção, confira os detalhes de uso do certificado do IoT Edge.
Fornecer o certificado de AC raiz
Para verificar os certificados do dispositivo de gateway, o dispositivo downstream precisa de sua cópia do certificado CA raiz. Se você usar os scripts no repositório Git do IoT Edge para criar certificados de teste, o certificado de autoridade raiz é chamado de azure-iot-test-only.root.ca.cert.pem.
Caso ainda não o tenha feito, mova esse arquivo de certificado para qualquer diretório em seu dispositivo downstream. Mova o arquivo instalando o certificado de AC no repositório de certificados do sistema operacional ou referenciando o certificado em aplicativos que usam os SDKs do IoT do Azure.
Use um serviço como o Azure Key Vault ou uma ferramenta como o protocolo de cópia segura para mover o arquivo de certificado.
Instale certificados no sistema operacional
Depois de copiar o certificado de autoridade de certificação raiz para o dispositivo downstream, verifique se os aplicativos que se conectam ao gateway podem acessar o certificado.
Instale o certificado da autoridade de certificação raiz no repositório de certificados do sistema operacional para que a maioria dos aplicativos possa usá-lo. Alguns aplicativos, como Node.js, não usam o repositório de certificados do sistema operacional, mas sim o repositório de certificados interno do Node.js. Se você não puder instalar o certificado no nível do sistema operacional, vá para a seção usar certificados com os SDKs do Azure IoT .
Instale o certificado raiz da Autoridade Certificadora no Ubuntu ou no Windows.
Use os comandos a seguir para instalar um certificado de autoridade de certificação em um host Ubuntu. Este exemplo usa o certificado azure-iot-test-only.root.ca.cert.pem dos artigos de pré-requisitos e pressupõe que você tenha copiado o certificado em um local no dispositivo downstream.
sudo cp <file path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates
Quando terminar, você verá uma mensagem Atualizando certificados em /etc/ssl/certs... 1 adicionado, 0 removido; concluído.
Usar certificados com SDKs de IoT do Azure
SDKs da Internet das Coisas do Azure se conectam a um dispositivo IoT Edge usando aplicativos de exemplo simples. A meta dos exemplos é conectar o cliente do dispositivo e enviar mensagens de telemetria do dispositivo para o gateway e, em seguida, fechar a conexão e sair.
Antes de usar as amostras no nível do aplicativo, obtenha os seguintes itens:
Sua cadeia de conexão do Hub IoT, do seu dispositivo downstream, modificada para apontar para o dispositivo de gateway.
Todos os certificados necessários para autenticar seu dispositivo downstream no Hub IoT. Para saber mais, confira Autenticar um dispositivo downstream no Hub IoT do Azure.
O caminho completo para o certificado de AC raiz que você copiou e salvou em algum lugar em seu dispositivo downstream.
Por exemplo:
<file path>/azure-iot-test-only.root.ca.cert.pem.
Agora você está pronto para usar certificados com uma amostra no idioma de sua escolha:
Esta seção fornece um aplicativo de exemplo para conectar um cliente do dispositivo Node.js da Internet das Coisas do Azure a um gateway do IoT Edge. Quanto aos aplicativos Node.js, você deve instalar o certificado de CA raiz no nível do aplicativo, conforme mostrado aqui. Os aplicativos Node.js não usam o repositório de certificados do sistema.
- Obter a amostra para edge_downstream_device.js da repositório de exemplos do SDK do dispositivo IoT do Azure para Node. js.
- Confira o arquivo readme.md para verificar se você tem todos os pré-requisitos para executar o exemplo.
- No arquivo edge_downstream_device.js, atualize as variáveis connectionString e edge_ca_cert_path.
- Consulte a documentação do SDK para obter instruções sobre como executar a amostra no seu dispositivo.
Para reconhecimento da amostra que você está executando, o snippet de código a seguir é como o SDK do cliente lê o arquivo de certificado e o utiliza para estabelecer uma conexão TLS segura:
// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};
Testar a conexão de gateway
Execute este comando de exemplo no dispositivo downstream para testar se ele pode se conectar ao dispositivo de gateway:
openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts
Esse comando verifica a conexão pelo MQTTS (porta 8883). Se você usar um protocolo diferente, ajuste o comando para AMQPS (5671) ou HTTPS (443).
A saída desse comando pode ser longa e inclui informações sobre todos os certificados na cadeia. Se a conexão for bem-sucedida, você verá uma linha como Verification: OK ou Verify return code: 0 (ok).
Solucionar problemas de conexão do gateway
Se a conexão do dispositivo downstream com seu dispositivo de gateway for instável, considere essas perguntas para ajudar a corrigir o problema.
- O nome do host do gateway na cadeia de conexão é igual ao valor do nome do host no arquivo de configuração do IoT Edge no dispositivo de gateway?
- O nome do host do gateway pode ser resolvido para um endereço IP? Corrija conexões intermitentes usando DNS ou adicionando uma entrada de arquivo de host no dispositivo downstream.
- As portas de comunicação estão abertas em seu firewall? Verifique se as portas de protocolo necessárias (MQTTS:8883, AMQPS:5671, HTTPS:433) estão abertas entre o dispositivo downstream e o dispositivo transparente do IoT Edge.
Próximas etapas
Saiba como o IoT Edge estende os recursos offline para dispositivos downstream.