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.

Observação

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.

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 mínimo de imposição de TLS como o mecanismo de teste e conformidade

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

Suporte mútuo ao TLS

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, confiracertificados X. 509 com suporte.

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

Para cumprir a política de segurança do Azure para uma conexão segura, o Hub IoT dá suporte aos seguintes pacotes de criptografia 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

Atualmente, os seguintes conjuntos de criptografia são permitidos no Hub IoT. No entanto, esses conjuntos de criptografia não são mais recomendados pelas diretrizes de segurança do Azure.

Conjuntos de Criptografia Suporte à versão do 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 criptografia mais altos a serem usados duranteClientHello. No entanto, alguns deles podem não estar com suporte do Hub IoT (por exemplo,ECDHE-ECDSA-AES256-GCM-SHA384). Nesse caso, o Hub IoT tenta seguir a preferência do cliente, mas eventualmente negocia o pacote de criptografia com ServerHello.

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 (outras regiões do Azure terão suporte em 2025):

  • Leste dos EUA
  • Centro-Sul dos Estados Unidos
  • Oeste dos EUA 2
  • Governo dos EUA do 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. Comece com o assistente de criação do Hub IoT no portal do Azure

  2. Escolha umaRegiãode uma na lista acima.

  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. Clique em 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 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 do TLS será recusado se a mensagem ClientHello não listar nenhuma das criptografias recomendadas.

Observação

A propriedade minTlsVersion é somente leitura e não pode ser alterada depois que o recurso do Hub IoT é criado. 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.

Após os failovers, a propriedade minTlsVersion de seu Hub IoT permanecerá efetiva na região emparelhada geograficamente após o failover.

Verifique as versões do 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 do TLS 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 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 do recurso, 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
  1. Veja um exemplo dos resultados da consulta: Diagrama mostrando a consulta para a versão do TLS do dispositivo.
  2. Observação: 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.

Idioma Versões compatíveis com o TLS 1.2 Documentação
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
NodeJS 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.

Fixação 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 do Azure IoT.

Próximas etapas