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 acima.
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.
Anexaçã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 isso for necessário, anexe apenas os certificados raiz conforme a descrição nesta postagem no blog do Azure IoT.
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.