Compartilhar via


Suporte ao protocolo (TLS) no Hub IoT

O Hub IoT usa o protocolo TLS para proteger as conexões contra dispositivos e serviços de IoT.

Note

O Hub IoT do Azure encerrará o suporte ao TLS 1.0 e 1.1 em alinhamento com o comunicado de descontinuação do serviço TLS 1.0 e 1.1 em 31 de agosto de 2025. Além disso, o Hub IoT não oferecerá mais suporte a pacotes de criptografia fracos a partir de 31 de agosto de 2025. Somente pacotes de criptografia fortes recomendados terão suporte para hubs IoT existentes e novos.

Portanto, é essencial que você teste e valide corretamente e com antecedência para que todos os dispositivos e serviços de IoT sejam compatíveis com o TLS 1.2 e com as criptografias recomendadas. É altamente recomendável usar o recurso de imposição mínima de TLS como mecanismo de teste e conformidade.

Important

É importante distinguir entre o suporte do TLS 1.2 e a imposição do TLS 1.2. O TLS 1.2 tem suporte em todos os Hubs IoT, o que significa que os Hubs IoT podem lidar com conexões usando o protocolo TLS 1.2. Por outro lado, a imposição do TLS 1.2 garante que o Hub IoT aceite apenas conexões usando o TLS 1.2 ou superior. Quando a imposição do TLS 1.2 está habilitada, o serviço também impõe o uso de conjuntos de criptografia fortes.

Atualmente, a imposição do TLS 1.2 só tem suporte em regiões selecionadas:

  • Todas as regiões de nuvem pública
  • US Gov - Arizona
  • US Gov - Virgínia (não há suporte disponível a TLS 1.0/1.1 nesta região. A imposição do TLS 1.2 deve estar habilitada ou a criação do Hub IoT falhará).

Para descobrir a versão do TLS em que os dispositivos do Hub IoT estão em execução, consulte o guia de fim de suporte do TLS 1.0 e 1.1.

Suporte ao TLS mútuo

A autenticação TLS mútua garante que o cliente autentique o certificado do servidor (Hub IoT) e o servidor (Hub IoT) autentique o cliente usando o certificado de cliente X.509 ou a impressão digital X.509. O Hub IoT executa a autorização após a conclusão da autenticação.

Para protocolos AMQP (Advanced Message Queuing Protocol) e MQTT (Message Queuing Telemetry Transport), o Hub IoT solicita um certificado de cliente no handshake do TLS inicial. Se um for fornecido, o Hub IoT autentica o certificado do cliente e o cliente autentica o certificado do Hub IoT. Esse processo é chamado de autenticação TLS mútua. Quando o Hub IoT recebe um pacote de conexão MQTT ou um link AMQP é aberto, o Hub IoT executa a autorização para o cliente solicitante e determina se o cliente requer autenticação X.509. Se a autenticação TLS mútua foi concluída e o cliente está autorizado a se conectar como o dispositivo, ela é permitida. No entanto, se o cliente exigir autenticação X.509 e a autenticação do cliente não tiver sido concluída durante o handshake do TLS, o Hub IoT rejeitará a conexão.

Para o protocolo HTTP, quando o cliente faz sua primeira solicitação, o Hub IoT verifica se o cliente requer autenticação X.509 e, se a autenticação do cliente foi concluída, o Hub IoT executará a autorização. Se a autenticação do cliente não for concluída, o Hub IoT rejeitará a conexão

Depois de um handshake de TLS for bem-sucedido, o Hub IoT pode autenticar um dispositivo usando uma chave simétrica ou um certificado X. 509. Para autenticação baseada em certificado, o Hub IoT valida o certificado em relação à AC (autoridade de certificação) ou impressão digital fornecida. Para saber mais, confira Autenticar identidades com certificados X.509.

Certificado do TLS do servidor do Hub IoT

Durante um handshake do armazenamento local de thread, o Hub IoT apresenta certificados do servidor com chave RSA para conectar clientes. Todos os hubs IoT na nuvem global do Azure usam o certificado TLS emitido pelo DigiCert Global Root G2.

É altamente recomendável que todos os dispositivos confiem nas três seguintes ACs raiz:

  • AC raiz do DigiCert Global G2
  • AC raiz do Microsoft RSA 2017

Para obter links para baixar esses certificados, confira Detalhes da Autoridade de Certificação do Azure.

As migrações da AC raiz são raras. Você sempre deve preparar sua solução de IoT para o evento improvável de que uma AC raiz esteja comprometida e uma migração de AC raiz de emergência seja necessária.

Conjuntos de criptografia

A partir de 31 de agosto de 2025, o Hub IoT impõe o uso de conjuntos de criptografia fortes recomendados para todos os Hubs IoT existentes e novos. Não há suporte para pacotes de criptografia não recomendados (fracos) após essa data.

Para cumprir a política de segurança do Azure para uma conexão segura, o Hub IoT só dá suporte aos seguintes pacotes de criptografia RSA e ECDSA:

  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

Os seguintes pacotes de criptografia não recomendados são permitidos em hubs sem minTlsVersion:1.2 até 31 de agosto de 2025:

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA

Um cliente pode sugerir uma lista de pacotes de criptografia mais altos a serem usados duranteClientHello. No entanto, o Hub IoT pode não dar suporte a alguns deles, por exemplo. ECDHE-ECDSA-AES256-GCM-SHA384 Nesse caso, o Hub IoT tenta seguir a preferência do cliente, mas em última instância acaba por negociar o pacote de criptografia com ServerHello.

Note

Ao usar um cifrador ECDSA ou ECDHE, o cliente deve fornecer a extensão supported_groups na ClientHello com um grupo válido. Ao se conectar com um certificado do cliente, o cliente deve incluir a curva usada no certificado do cliente em sua supported_groups extensão.

Atualizar o Hub IoT para suporte ao TLS 1.2

Depois que um Hub IoT é criado, a minTlsVersion propriedade pode ser atualizada usando o portal do Azure, a CLI ou os SDKs. Se você precisar atualizar para impor o Hub IoT para usar o TLS 1.2 e conjuntos de criptografia fortes (permitidos apenas em regiões selecionadas) ou para definir o suporte ao TLS 1.2 (com suporte em todas as regiões), você poderá fazer isso seguindo estas etapas.

Para atualizar o Hub IoT para dar suporte ao TLS 1.2 e/ou impor conjuntos de criptografia fortes no portal do Azure:

  1. Navegue até o Hub IoT existente no portal do Azure.

  2. Na guia Visão geral no menu à esquerda, clique no link Versão mínima do TLS na seção Essentials.

    Captura de tela mostrando como escolher a versão mínima de suporte do TLS.

  3. Na janela mínima do lado da versão do TLS, selecione 1.2 para garantir que somente dispositivos com suporte ao TLS 1.2 ou superior possam se conectar.

  4. Clique em Atualizar.

    Captura de tela mostrando como ativar o suporte ao TLS 1.2.

Note

Você pode atualizar o Hub IoT para o TLS 1.2 em TODAS as regiões públicas. No entanto, se você atualizar um Hub IoT em uma das regiões selecionadas (Leste dos EUA, Centro-Sul dos EUA, Oeste dos EUA 2, Us Gov Arizona e US Gov Virginia), ele imporá conjuntos de criptografia mais fortes.

Impor o Hub IoT para usar o TLS 1.2 e os conjuntos de criptografia fortes

Para garantir que seus dispositivos IoT estejam em conformidade com o TLS 1.2 e conjuntos de criptografia fortes, você pode impor a conformidade usando o recurso de imposição de TLS mínimo no Hub IoT do Azure.

Atualmente, esse recurso só está disponível nas seguintes regiões e durante a criação do Hub IoT:

  • Regiões de nuvem pública:
  • US Gov - Arizona
  • US Gov - Virgínia (o suporte da TLS 1.0/1.1 não está disponível nesta região-a imposição da TLS 1,2 deve ser habilitada ou o script de criação do Hub IoT falhará)

Para habilitar o TLS 1.2 e a imposição de conjuntos de criptografia fortes no portal do Azure:

  1. Acesse o assistente de criação do Hub IoT no portal do Azure.

  2. Escolha uma Região na lista de regiões com suporte.

  3. EmGerenciamento -> Avançado -> Segurança de Camada de Transporte (TLS) -> versão mínima do TLS, selecione 1.2. Esta configuração só aparece para o Hub IoT criado na região com suporte.

    Captura de tela mostrando como ativar a imposição do TLS 1.2 durante a criação do hub IoT.

  4. Selecione Criar

  5. Conecte seus dispositivos IoT a este Hub IoT.

Para usar o modelo do ARM para a criação, provisione um novo Hub IoT em qualquer uma das regiões com suporte e defina aminTlsVersion propriedade1.2na especificação da funcionalidade:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-resource-name>",
            "___location": "<any-of-supported-regions-below>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "<your-hubs-SKU-name>",
                "tier": "<your-hubs-SKU-tier>",
                "capacity": 1
            }
        }
    ]
}

O recurso de hub IoT criado usando essa configuração recusa clientes de dispositivo e serviço que tentam se conectar usando as versões 1.0 e 1.1 do TLS. Da mesma forma, o handshake do TLS será recusado se a mensagem ClientHello não listar nenhuma das criptografias recomendadas.

Note

Em caso de failover, a propriedade minTlsVersion do Hub IoT permanece efetiva na região emparelhada geograficamente após o failover.

Verificando versões do TLS e conjuntos de criptografia para dispositivos do Hub IoT

O Hub IoT do Azure fornece a capacidade de verificar a versão do TLS, conjuntos de criptografia e outras métricas de conexão de dispositivo para ajudar a monitorar a segurança de dispositivos IoT. Você pode usar métricas do Hub IoT ou logs de diagnóstico para acompanhar o uso da versão do TLS e outras propriedades relacionadas, como Cipher Suites.

Verificando versões do TLS e conjuntos de criptografia usando métricas do Hub IoT

Se você quiser validar se o tráfego de dispositivo para o Hub IoT está utilizando TLSv1.2 e pacotes de criptografia fortes, verifique as métricas do Hub IoT. Isso permite filtrar por versão do TLS ou conjunto de criptografias e verificar o número de conexões bem-sucedidas.

  1. No portal do Azure, vá para o hub IoT.

  2. No menu esquerdo em Monitoramento, selecione Métricas.

  3. Adicione a métrica Conexões Bem-Sucedidas.

    Captura de tela mostrando como adicionar a métrica conexões bem-sucedidas.

  4. Filtre por versão do TLS ou pacote de criptografia selecionando o botão Adicionar filtro e escolhendo a propriedade apropriada, versão TLS ou pacote de criptografia, operador, por exemplo "=", e valor, por exemplo, TLSv1.2.

    Captura de tela mostrando como filtrar por versão do TLS ou pacote de criptografia.

  5. Depois de aplicar o filtro, você verá a soma de dispositivos com conexões bem-sucedidas do Hub IoT com base na propriedade filtrada e nos valores.

Verificando versões do TLS e conjuntos de criptografia usando logs de diagnóstico do Hub IoT

O Hub IoT do Azure pode fornecer logs de diagnóstico para várias categorias que podem ser analisadas usando os logs do Azure Monitor. No log de conexões, você pode encontrar a versão do TLS e o pacote de criptografia para seus dispositivos do Hub IoT.

Para exibir esses logs, siga estas etapas:

  1. No portal do Azure, vá para o hub IoT.

  2. No menu esquerdo em Monitoramento, selecione Configurações de diagnóstico. Verifique se as configurações de diagnóstico têm "Conexões" marcadas.

  3. No menu esquerdo em Monitoramento, selecione Logs.

  4. Insira a consulta a seguir:

    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
    | where Category == "Connections"
    | where OperationName == "deviceConnect"
    | extend props_json = parse_json(properties_s)
    | project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
    
  5. Um exemplo dos resultados da consulta tem esta aparência:

    Diagrama mostrando a consulta para a versão do TLS do dispositivo.

Note

A consulta de versão do TLS não está disponível para dispositivos que usam conexões HTTPS.

Configuração da TLS para SDK e o IoT Edge

Use os links a seguir para configurar o TLS 1.2 e as criptografias permitidas em SDKs de cliente do Hub IoT.

Linguagem Versões compatíveis com o TLS 1.2 Documentation
C Marca 2019-12-11 ou mais recente Link
Python Versão 2.0.0 ou mais recente Link
C# Versão 1.21.4 ou mais recente Link
Java Versão 1.19.0 ou mais recente Link
Node.js Versão 1.12.2 ou mais recente Link

Dispositivos do IoT Edge podem ser configurados para usar o TLS 1.2 ao se comunicarem com o Hub IoT. Para essa finalidade, use a página de documentação do IoT Edge.

O certificado TLS do servidor de ECC (criptografia de curva elíptica)

Ao mesmo tempo em que oferece segurança semelhante aos certificados RSA, a validação do certificado ECC (de conjuntos de codificação somente ECC) usa até 40% menos de computação, memória e largura de banda. Estas economias são importantes para os dispositivos não agrupados IoT devido a seus perfis e memória menores e para dar suporte a casos de uso em ambientes limitados de largura de banda de rede.

Para usar o certificado de servidor do ECC do Hub IoT:

  1. Verifique se todos os dispositivos confiam nos seguintes CAs raiz:
    • AC raiz do DigiCert Global G2
    • AC raiz do Microsoft RSA 2017
  2. Configure o clientepara incluirapenasconjuntos de codificação de ECDSA eexcluirqualquer RSA. Estes são os pacotes de criptografia com suporte para o certificado ECC:
    • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
    • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  3. Conecte seu cliente ao hub IoT.

Negociação de comprimento máximo do fragmento de TLS

O Hub IoT dá suporte também à negociação de comprimento máximo do fragmento TLS, que às vezes é conhecida como negociação de tamanho de quadro TLS. Esse recurso está em uma versão prévia.

Use este recurso para especificar o comprimento máximo do fragmento de texto não criptografado com um valor menor que o padrão de 2 ^ 14 bytes. Uma vez negociado, o Hub IoT e o cliente começam a fragmentar as mensagens para garantir que todos os fragmentos sejam menores do que o comprimento negociado. Este comportamento é útil para a computação ou dispositivos com restrição de memória. Para saber mais, confira aespecificação de extensão do TLS oficial.

O suporte oficial do SDK para este recurso de versão prévia do recurso pública ainda não está disponível. Para começar

  1. Crie um Hub IoT.
  2. Ao usar o OpenSSL, chame oSSL_CTX_set_tlsext_max_fragment_lengthpara especificar o tamanho do fragmento.
  3. Conecte seu cliente ao Hub IoT.

Pinagem de certificado

A Anexação de certificado e a filtragem dos certificados de servidor TLS e os certificados intermediários associados aos pontos de extremidade do Hub IoT são altamente desaconselhados, pois a Microsoft frequentemente lança esses certificados com pouco ou nenhum aviso. Se isso for necessário, anexe apenas os certificados raiz conforme a descrição nesta postagem no blog da Internet das Coisas do Azure.

Próximas etapas