Suporte a TLS no DPS (Serviço de Provisionamento de Dispositivos) no Hub IoT do Azure
O DPS usa o Protocolo TLS para proteger conexões de dispositivos IoT.
As versões atuais de protocolo TLS com suporte do DPS são:
- TLS 1.2
Restringir conexões a uma versão mínima do TLS
Você pode configurar suas instâncias DPS para permitir apenas conexões de cliente de dispositivo que usam uma versão mínima do TLS ou superior.
Importante
Atualmente, o DPS dá suporte apenas ao TLS 1.2, portanto, não é necessário especificar a versão mínima do TLS ao criar uma instância DPS. Esse recurso é fornecido para expansão futura.
Para fazer isso, provisione um novo recurso DPS definindo a minTlsVersion
propriedade na 1.2
especificação de recurso DPS de modelos do Azure Resource Manager. O JSON de modelo de exemplo a seguir especifica a propriedade minTlsVersion
para uma nova instância de DPS.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/ProvisioningServices",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-DPS-resource-name>",
"location": "<any-region>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "S1",
"capacity": 1
},
}
]
}
Para implantar o modelo, execute o comando da CLI do Azure a seguir.
az deployment group create -g <your resource group name> --template-file template.json
Para obter mais informações sobre a criação de recursos de DPS com modelos do Resource Manager, confira Configurar o DPS com um modelo do Azure Resource Manager.
O recurso de DPS criado usando essa configuração recusará dispositivos que tentam se conectar usando as versões 1.0 e 1.1 do TLS.
Observação
A propriedade minTlsVersion
é somente leitura e não pode ser alterada depois que o recurso de DPS é criado. Portanto, é essencial que você teste e valide corretamente e com antecedência que todos os dispositivos IoT são compatíveis com o TLS 1.2 e com as codificações recomendadas.
Observação
Após os failovers, a propriedade minTlsVersion
de seu DPS permanecerá efetiva na região emparelhada geograficamente após o failover.
Codificações recomendadas
As instâncias DPS impõem o uso dos seguintes pacotes de criptografia recomendados e herdados:
Pacotes de codificação TLS 1.2 recomendados |
---|
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
Pacotes de codificação herdados
Esses pacotes de criptografia ainda são compatíveis com o DPS, mas logo serão depreciados. Se possível, use os pacotes de criptografia recomendados.
Opção nº 1 (melhor segurança) |
---|
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
Opção nº 2 (melhor desempenho) |
---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1) TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy) |
Suporte mútuo ao TLS
Quando os registros DPS são configurados para autenticação X.509, o mTLS (TLS mútuo) tem suporte do DPS.
Certificado TLS do servidor
Durante um handshake do TLS, o DPS apresenta certificados do servidor com chave RSA para conectar clientes. Todas as instâncias DPS na nuvem global do Azure usam o certificado TLS emitido pelo certificado DigiCert Global Root G2.
Também recomendamos adicionar os certificados da Autoridade de Certificação Raiz do Microsoft RSA 2017 aos seus dispositivos para evitar interrupções caso o DigiCert Global Root G2 seja desativado inesperadamente. Embora as migrações de AC raiz sejam raras, para resiliência no cenário de segurança moderno, você deve preparar seu cenário de IoT para o evento improvável de que uma AC raiz esteja comprometida ou uma migração de AC raiz de emergência seja necessária.
É altamente recomendável que todos os dispositivos confiem nas seguintes CAs 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.
Confiança do certificado nos SDKs
Os SDKs de dispositivo da Internet das Coisas do Azure conectam e autenticam dispositivos aos serviços da Internet das Coisas do Azure. Os diferentes SDKs gerenciam certificados de maneiras diferentes dependendo do idioma e da versão, mas a maioria depende do repositório de certificados confiável do dispositivo em vez de fixar certificados diretamente na base de código. Essa abordagem fornece flexibilidade e resiliência para lidar com alterações futuras em certificados raiz.
A tabela a seguir resume quais versões do SDK dão suporte ao repositório de certificados confiável:
SDK do dispositivo IoT do Azure | Versões com suporte |
---|---|
C | Todas as versões com suporte no momento |
C# | Todas as versões com suporte no momento |
Java | Versão 2.x.x e superior |
Node.js | Todas as versões com suporte no momento |
Python | Todas as versões com suporte no momento |
Fixação de certificado
A anexação e a filtragem de certificados do servidor TLS (também conhecidos como certificados folha) e de certificados intermediários associados a pontos de extremidade do DPS são altamente desencorajadas, pois a Microsoft costuma distribuir esses certificados com notificação mínima ou sem notificação. Se for necessário, fixe apenas os certificados raiz.
Usar o TLS 1.2 nos SDKs de IoT
Use os links abaixo para configurar o TLS 1.2 e as codificações permitidas nos SDKs do cliente IoT do Azure.
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 |
Usar o TLS 1.2 com o Hub IoT
O Hub IoT pode ser configurado para usar o TLS 1.2 ao se comunicar com dispositivos. Para obter mais informações, confira Substituir TLS 1.0 e 1.1 para o Hub IoT.
Usar o TLS 1.2 com IoT Edge
Dispositivos do IoT Edge podem ser configurados para usar o TLS 1.2 ao se comunicarem com o Hub IoT e o DPS. Para saber mais, confira a página de documentação IoT Edge.