Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Hub IoT usa TLS (Transport Layer Security) para proteger conexões de dispositivos e serviços IoT.
Note
O Hub IoT do Azure deixa de suportar o TLS 1.0 e 1.1, em conformidade com o anúncio de serviço do Azure relativo à descontinuação do TLS 1.0 e 1.1 em 31 de agosto de 2025. Além disso, o Hub IoT já não suporta conjuntos de cifras fracos a partir de 31 de agosto de 2025. Apenas conjuntos de cifras fortes recomendados são suportados tanto para Hubs IoT existentes como para novos.
É essencial que teste e valide corretamente que todos os seus dispositivos e serviços IoT são compatíveis com o TLS 1.2 e as cifras recomendadas antecipadamente. Recomendamos que utilize a funcionalidade mínima de aplicação TLS como mecanismo para testes e conformidade.
Important
É importante distinguir entre o suporte ao TLS 1.2 e a aplicação do TLS 1.2. Todos os Hubs IoT suportam TLS 1.2, o que significa que os Hubs IoT podem gerir ligações usando o protocolo TLS 1.2. Por outro lado, a imposição do TLS 1.2 garante que o Hub IoT só aceite conexões usando 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 pacotes de codificação fortes.
Atualmente, a aplicação do TLS 1.2 é suportada apenas em regiões de nuvem pública.
Para descobrir a versão do TLS que os seus dispositivos do Hub IoT estão executando, consulte o guia de fim de suporte 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 estiver autorizado a ligar-se como 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, então o Hub IoT rejeita a ligaçã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 Autenticar identidades com certificados X.509.
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.
Confie nas seguintes duas CAs raiz para todos os dispositivos:
- Autoridade de Certificação Raiz DigiCert Global G2
- 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. Prepare sempre a sua solução IoT para o improvável caso de uma CA raiz ser comprometida e de ser necessária uma migração emergencial da CA raiz.
Pacotes de cifragem
A partir de 31 de agosto de 2025, o Hub IoT impõe o uso de pacotes de codificação fortes recomendados para todos os Hubs IoT novos e existentes. Conjuntos de cifras não recomendados (fracos) já não são suportados após esta data.
Para estar em conformidade com a política de segurança do Azure para uma conexão segura, o Hub IoT suporta apenas os seguintes pacotes de codificação 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
Note
Os pacotes de codificação ECDSA só estão disponíveis em regiões de nuvem pública.
Os seguintes pacotes de codificação 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 conjuntos de cifras mais elevados para usar durante ClientHello. No entanto, o Hub IoT pode não suportar alguns deles, por exemplo, ECDHE-ECDSA-AES256-GCM-SHA384. Neste caso, o Hub IoT tenta seguir a preferência do cliente, mas acaba por negociar, por fim, uma suite de cifras inferior com ServerHello.
Note
Ao utilizar uma cifra ECDSA ou ECDHE, o cliente deve fornecer a extensão supported_groups no ClientHello com um grupo válido. Ao se conectar com um certificado de cliente, o cliente deve incluir a curva usada nesse certificado de cliente em sua supported_groups extensão.
Atualizar o Hub IoT para o suporte a TLS 1.2
Depois de criar um Hub IoT, atualize a propriedade minTlsVersion usando o portal Azure, CLI ou SDKs. Para atualizar o Hub IoT para aplicar o TLS 1.2 e conjuntos de cifras fortes (permitidos apenas em regiões selecionadas) ou para definir suporte a TLS 1.2 (suportado em todas as regiões), siga estes passos.
Para atualizar o Hub IoT para dar suporte ao TLS 1.2 e/ou impor pacotes de codificação fortes no portal do Azure:
Navegue até o Hub IoT existente no portal do Azure.
No separador Visão Geral no menu à esquerda, selecione o link Versão Mínima TLS na secção Essenciais.
Na janela lateral Versão Mínima TLS , selecione 1.2 para garantir que apenas dispositivos que suportem TLS 1.2 ou superior podem ligar-se.
Selecione Atualizar.
Note
Você pode atualizar seu Hub IoT para TLS 1.2 em todas as regiões de nuvem pública.
Force o Hub IoT a usar TLS 1.2 e suites de cifragem fortes
Para garantir que os seus dispositivos IoT estão em conformidade com o TLS 1.2 e com conjuntos de cifras robustos, imponha essa conformidade utilizando a funcionalidade de imposição da versão mínima do TLS no Hub IoT do Azure.
Note
Atualmente, esta funcionalidade está disponível apenas em regiões de cloud pública.
Para permitir a aplicação do TLS 1.2 e dos conjuntos de cifras fortes no portal Azure:
Vá para o assistente de configuração do Hub IoT no portal do Azure.
Escolha uma região na lista de regiões suportadas.
Em Gerenciamento -> Avançado -> Transport Layer Security (TLS) -> Versão mínima do TLS, selecione 1.2. Esta configuração só aparece para hubs IoT criados em regiões suportadas.
Selecione Criar.
Conecte seus dispositivos IoT a este Hub IoT.
Para usar um modelo ARM para criação, prevê uma nova Hub IoT em qualquer uma das regiões suportadas e define a propriedade minTlsVersion para 1.2 na especificação de 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 recusa clientes de dispositivos e serviços que tentem ligar-se 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.
Note
Após o failover, a propriedade minTlsVersion do seu Hub IoT continua em vigor na região emparelhada geograficamente.
Verifique versões TLS e suites de cifras para dispositivos Hub IoT
O Hub IoT do Azure fornece a capacidade de verificar a versão TLS, pacotes de codificação e outras métricas de conexão de dispositivo para ajudar a monitorar a segurança de dispositivos IoT. Pode usar métricas de Hub IoT ou registos de diagnóstico para acompanhar a utilização da versão TLS e outras propriedades relacionadas como Cipher Suites.
Note
Atualmente, esta funcionalidade está disponível apenas em regiões de cloud pública.
Verifique versões TLS e suites de cifras usando métricas do Hub IoT
Para validar que o tráfego de dispositivos para o Hub IoT utiliza TLSv1.2 e suites de cifras fortes, verifique as métricas do Hub IoT. Podes filtrar por versão TLS ou suite de cifras e verificar o número de ligações bem-sucedidas.
No portal do Azure, vá para o seu hub IoT.
No menu do lado esquerdo, em Monitoramento, selecione Métricas.
Adicione a métrica Successful Connects.
Filtre por versão TLS ou conjunto de cifras selecionando o botão Adicionar filtro e escolhendo a propriedade apropriada, versão TLS ou conjunto de cifras, operador, como "=", e valor, como TLSv1.2.
Depois de aplicar o filtro, vê a soma de dispositivos com ligações Hub IoT bem-sucedidas com base na propriedade e valores filtrados.
Verifique versões TLS e suites de cifras usando os registos de diagnóstico do Hub IoT
O Hub IoT do Azure pode fornecer logs de diagnóstico para várias categorias que pode analisar usando o Azure Monitor Logs. No registo de ligações, podes encontrar a versão TLS e a suite de cifras para os teus dispositivos Hub IoT.
Para visualizar estes registos, siga estes passos:
No portal do Azure, vá para o seu hub IoT.
No menu do lado esquerdo, em Monitoramento, selecione Configurações de diagnóstico. Garante que as definições de diagnóstico têm as Ligações ativadas.
No menu do lado esquerdo, em Monitoramento, selecione Logs.
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.tlsVersionUm exemplo dos resultados da consulta tem esta aparência:
Note
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.
| Linguagem | Versões que suportam TLS 1.2 | Documentation |
|---|---|---|
| C | Tag 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 |
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:
- Certifique-se de que todos os dispositivos confiam nas seguintes autoridades de certificação raiz:
- Autoridade de Certificação Raiz DigiCert Global G2
- Raiz do Microsoft RSA CA 2017
-
Configure o seu cliente para incluir apenas suítes de cifra ECDSA e exclua quaisquer suítes RSA. Estes são os pacotes de codificação suportados para o certificado ECC:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- Conecte seu cliente ao hub IoT.
Note
Atualmente, esta funcionalidade está disponível apenas em regiões de cloud pública.
Negociação de comprimento máximo de fragmento TLS
O Hub IoT também oferece suporte à negociação do comprimento máximo dos fragmentos TLS, que às vezes também é chamada negociação do tamanho dos quadros 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
- Criar um Hub IoT.
- Ao usar OpenSSL, chame SSL_CTX_set_tlsext_max_fragment_length para especificar o tamanho do fragmento.
- Conecte seu cliente ao Hub IoT.
Note
Atualmente, esta funcionalidade está disponível apenas em regiões de cloud pública.
Fixação do certificado
Pinagem de certificados e filtragem dos certificados do servidor TLS e dos certificados intermediários associados aos pontos de extremidade do Hub IoT é fortemente desencorajada, pois a Microsoft frequentemente atualiza esses certificados com pouco ou nenhum aviso. Se necessário, fixe apenas os certificados raiz conforme descrito nesta postagem do blog do Azure IoT.
Suporte TLS 1.3 (pré-visualização)
O Hub IoT do Azure suporta TLS 1.3 através de novos endpoints de dispositivos e serviços disponíveis juntamente com o endpoint clássico existente. Estes endpoints são provisionados automaticamente em todos os hubs IoT e podem ser adotados ao seu próprio ritmo.
Endpoints
| Endpoint | Hostname | Suporte de TLS |
|---|---|---|
| Classic | <hub>.azure-devices.net |
TLS 1,2 |
| Dispositivo (pré-visualização) | <hub>.device.azure-devices.net |
TLS 1.2 (cifras restritas) + TLS 1.3 |
| Serviço (pré-visualização) | <hub>.service.azure-devices.net |
TLS 1.2 (cifras restritas) + TLS 1.3 |
O endpoint clássico mantém-se totalmente suportado e continua a ser o padrão para cargas de trabalho existentes.
Requirements
Os novos endpoints têm requisitos mais rigorosos do que o endpoint clássico:
- O SNI é obrigatório. Os clientes devem enviar a extensão Server Name Indication (SNI) no handshake TLS.
- Conjuntos de cifras restritos. Apenas são suportados conjuntos de cifras compatíveis com a segurança. Dispositivos que dependem de conjuntos de cifras que não estão neste conjunto falham em ligar-se. Para a lista de conjuntos de cifras suportados, veja Suites de cifras.
- Os dispositivos que utilizam TLS 1.2 podem ligar-se aos novos endpoints se suportarem os conjuntos de cifra necessários.
Utilizar os novos pontos finais
Para recuperar as cadeias de ligação dos novos endpoints, use o --hostname-type parâmetro:
# Device connection string using the TLS 1.3-capable device endpoint
az iot hub device-identity connection-string show \
--hub-name <hub-name> \
--resource-group <resource-group> \
--device-id <device-id> \
--hostname-type device
# Hub connection string using the service endpoint
az iot hub connection-string show \
--hub-name <hub-name> \
--resource-group <resource-group> \
--hostname-type service
Para verificar os endpoints disponíveis no seu hub:
az iot hub show --name <hub-name> --resource-group <resource-group> \
--query "{classic:properties.hostName, device:properties.deviceHostName}" \
--output json
Note
O service tipo de nome de host não é válido para cadeias de ligação de dispositivos ou módulos. Use device ou classic para ligações do lado do dispositivo.
Migrar para os endpoints TLS 1.3
A adoção dos novos endpoints é opcional e controlada pelo cliente. Para migrar:
- Verifique se os seus dispositivos e clientes suportam SNI e os conjuntos de cifra necessários.
- Teste a conectividade usando o endpoint do dispositivo num ambiente de staging.
- Atualize as cadeias de ligação do seu dispositivo para usar
<hub>.device.azure-devices.net. - Para serviços de backend, atualize as cadeias de ligação para usar
<hub>.service.azure-devices.net.
Para reverter, atualize as strings de ligação para usar o nome original <hub>.azure-devices.net do host.
Se o seu hub IoT for alcançado através de um endpoint privado (Azure Private Link), os novos nomes de host de dispositivos e serviços também devem ser resolvidos para um endereço IP privado na sua rede virtual. Na maioria dos casos, isto acontece automaticamente, mas a alocação estática de IP ou uma sub-rede completa podem exigir ação manual. Veja Atualizar endpoints privados para ativar o TLS 1.3.
Important
Não uses o ponto final de serviço (<hub>.service.azure-devices.net) para ligações de dispositivo. Destina-se apenas a serviços de backend.
Para informações sobre a utilização dos novos endpoints com o Device Provisioning Service (DPS), consulte Gerenciar hubs IoT ligados no DPS.
Próximos passos
- Para saber mais sobre segurança e controle de acesso do Hub IoT, consulte Controlar o acesso ao Hub IoT.
- Para saber mais sobre o uso do certificado X509 para autenticação de dispositivos, consulte Autenticação de Dispositivo usando Certificados CA X.509.