Partilhar via


Suporte a Transport Layer Security (TLS) no Hub IoT

O Hub IoT usa TLS (Transport Layer Security) para proteger conexões de dispositivos e serviços IoT.

Nota

O Hub IoT do Azure encerrará o suporte para TLS 1.0 e 1.1 em alinhamento com o anúncio de serviço amplo do Azure para a desativação do TLS 1.0 e 1.1 em 31 de agosto de 2025.

Portanto, é essencial que você teste e valide adequadamente se todos os seus dispositivos e serviços IoT são compatíveis com o TLS 1.2 e as cifras recomendadas com antecedência. É altamente recomendável usar o recurso mínimo de imposição de TLS como mecanismo de teste e conformidade

Para descobrir a versão do TLS que seus dispositivos do Hub IoT estão executando, consulte o guia de suporte final do TLS 1.0 e 1.1.

Suporte 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 os protocolos AMQP (Advanced Message Queuing Protocol) e MQTT (Message Queuing Telemetry Transport), o Hub IoT solicita um certificado de cliente no handshake TLS inicial. Se 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, é permitido. 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 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 executa a autorização. Se a autenticação do cliente não estiver concluída, o Hub IoT rejeitará a conexão

Após um handshake TLS 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 à impressão digital ou à autoridade de certificação (CA) fornecida. Para saber mais, consulte Certificados X.509 suportados.

Certificado TLS do servidor do Hub IoT

Durante um handshake TLS, o Hub IoT apresenta certificados de 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 CAs raiz a seguir:

  • DigiCert Global G2 raiz CA
  • Raiz do Microsoft RSA CA 2017

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

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

Suítes Cipher

Para estar em conformidade com a política de segurança do Azure para uma conexão segura, o Hub IoT oferece suporte aos seguintes pacotes de codificação RSA e ECDSA para TLS 1.2:

  • 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 codificação são atualmente permitidos no Hub IoT. No entanto, esses pacotes de codificação não são mais recomendados pelas diretrizes de segurança do Azure.

Suítes Cipher Suporte à versão TLS
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2
TLS_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2
TLS_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2
TLS_RSA_WITH_AES_256_CBC_SHA256 TLS 1.2
TLS_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS 1.0/1.1/1.2
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_AES_128_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2

Um cliente pode sugerir uma lista de pacotes de codificação mais altos para usar durante ClientHelloo . No entanto, alguns deles podem não ser suportados pelo Hub IoT (por exemplo, ECDHE-ECDSA-AES256-GCM-SHA384). Neste caso, o Hub IoT tenta seguir a preferência do cliente, mas eventualmente negocia o pacote de codificação com ServerHelloa .

Aplique o Hub IoT para usar o TLS 1.2 e pacotes de codificação fortes

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

Atualmente, esse recurso só está disponível nas seguintes regiões e durante a criação do Hub IoT (outras regiões do Azure terão suporte em 2025):

  • E.U.A. Leste
  • E.U.A. Centro-Sul
  • E.U.A. Oeste 2
  • US Gov - Arizona
  • US Gov Virginia (o suporte a TLS 1.0/1.1 não está disponível nesta região - a imposição do TLS 1.2 deve estar habilitada ou a criação do hub IoT falha)

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

  1. Começando com o assistente de criação do Hub IoT no portal do Azure

  2. Escolha uma região de uma na lista acima.

  3. Em Gerenciamento -> Avançado -> Transport Layer Security (TLS) -> Versão mínima do TLS, selecione 1.2. Essa configuração só aparece para o hub IoT criado na região suportada.

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

  4. Clique em Criar

  5. Conecte seus dispositivos IoT a este Hub IoT

Para usar o modelo ARM para criação, provisione um novo Hub IoT em qualquer uma das regiões suportadas e defina a minTlsVersion propriedade como 1.2 na especificação do recurso:

{
    "$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 do 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 TLS será recusado se a ClientHello mensagem não listar nenhuma das cifras recomendadas.

Nota

A minTlsVersion propriedade é somente leitura e não pode ser alterada depois que o recurso do Hub IoT for criado. Portanto, é essencial que você teste e valide adequadamente se todos os seus dispositivos e serviços IoT são compatíveis com o TLS 1.2 e as cifras recomendadas com antecedência.

Após failovers, a minTlsVersion propriedade do seu Hub IoT permanece efetiva na região pós-failover emparelhada geograficamente.

Verificando versões de TLS para dispositivos 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 TLS para seus dispositivos do Hub IoT.

Para visualizar estes registos, siga estes passos:

  1. No portal do Azure, vá para seu hub IoT.
  2. No menu de recursos em Monitoramento, selecione Configurações de diagnóstico. Verifique se as configurações de diagnóstico têm "Conexões" marcadas.
  3. No menu de recursos em Monitoramento, selecione Logs.
  4. Introduza a seguinte consulta:
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
  1. Um exemplo dos resultados da consulta tem a seguinte aparência: Diagrama mostrando a consulta para a versão TLS do dispositivo.
  2. Nota: A consulta de versão TLS não está disponível para dispositivos que usam conexões HTTPS.

Configuração TLS para SDK e IoT Edge

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

Idioma Versões que suportam TLS 1.2 Documentação
C Tag 2019-12-11 ou mais recente Ligação
Python Versão 2.0.0 ou mais recente Ligação
C# Versão 1.21.4 ou mais recente Ligação
Java Versão 1.19.0 ou mais recente Ligação
NodeJS Versão 1.12.2 ou mais recente Ligação

Os dispositivos IoT Edge podem ser configurados para usar TLS 1.2 ao se comunicar com o Hub IoT. Para isso, use a página de documentação do IoT Edge.

Certificado TLS do servidor ECC (Elliptic Curve Cryptography)

Embora ofereça segurança semelhante aos certificados RSA, a validação de certificados ECC (com pacotes de codificação somente ECC) usa até 40% menos computação, memória e largura de banda. Essas economias são importantes para dispositivos IoT por causa de seus perfis e memória menores, e para suportar casos de uso em ambientes de largura de banda de rede limitados.

Para usar o certificado de servidor ECC do Hub IoT:

  1. Certifique-se de que todos os dispositivos confiam nas seguintes autoridades de certificação raiz:
    • DigiCert Global G2 raiz CA
    • Raiz do Microsoft RSA CA 2017
  2. Configure seu cliente para incluir apenas pacotes de codificação ECDSA e excluir quaisquer pacotes RSA . Estes são os pacotes de codificação suportados 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 de fragmento TLS

O Hub IoT também oferece suporte à negociação de comprimento máximo de fragmento TLS, que às vezes é conhecida como negociação de tamanho de quadro TLS. Esta funcionalidade está em pré-visualização pública.

Use esse recurso para especificar o comprimento máximo do fragmento de texto sem formatação para um valor menor do que os 2^14 bytes padrão. 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. Esse comportamento é útil para dispositivos com restrição de memória ou computação. Para saber mais, consulte as especificações oficiais da extensão TLS.

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

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

Fixação do certificado

A fixação e filtragem de certificados do servidor TLS e certificados intermediários associados aos pontos de extremidade do Hub IoT é fortemente desencorajada, pois a Microsoft frequentemente rola esses certificados com pouco ou nenhum aviso. Se necessário, fixe apenas os certificados raiz conforme descrito nesta postagem do blog do Azure IoT.

Próximos passos