Suporte a TLS no Serviço de Provisionamento de Dispositivo (DPS) do Hub IoT do Azure

O DPS usa TLS (Transport Layer Security) para proteger conexões de dispositivos IoT.

As versões atuais do protocolo TLS suportadas pelo 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 de TLS ou superior.

Importante

Atualmente, o DPS suporta apenas TLS 1.2, portanto, não há necessidade de especificar a versão mínima do TLS quando você cria uma instância do DPS. Este recurso é fornecido para expansão futura.

Para fazer isso, provisione um novo recurso DPS definindo a minTlsVersion propriedade como na 1.2 especificação de recurso DPS do seu modelo do Azure Resource Manager. O modelo JSON de exemplo a seguir especifica a minTlsVersion propriedade para uma nova instância 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
            },
        }     
    ]
}

Você pode implantar o modelo com o seguinte comando da CLI do Azure.

az deployment group create -g <your resource group name> --template-file template.json

Para obter mais informações sobre como criar recursos do DPS com modelos do Resource Manager, consulte Configurar o DPS com um modelo do Azure Resource Manager.

O recurso DPS criado usando essa configuração recusará dispositivos que tentarem se conectar usando as versões 1.0 e 1.1 do TLS.

Nota

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

Nota

Após failovers, a minTlsVersion propriedade do seu DPS permanecerá efetiva na região emparelhada geograficamente após o failover.

As instâncias DPS impõem o uso dos seguintes pacotes de codificação 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 legados

Esses pacotes de codificação ainda são suportados pelo DPS, mas serão depreciados. Use os pacotes de codificação recomendados acima, se possível.

Opção #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 #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 TLS mútuo

Quando os registros de DPS são configurados para autenticação X.509, o TLS mútuo (mTLS) é suportado pelo DPS.

Fixação do certificado

A fixação e filtragem de certificados do servidor TLS (também conhecidos como certificados folha) e certificados intermediários associados a pontos de extremidade DPS é 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.

Usar TLS 1.2 nos SDKs de IoT

Use os links abaixo para configurar o TLS 1.2 e as cifras permitidas nos SDKs de cliente do Azure 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

Usar 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, consulte Substituindo o TLS 1.0 e 1.1 para o Hub IoT.

Usar o TLS 1.2 com o IoT Edge

Os dispositivos IoT Edge podem ser configurados para usar TLS 1.2 ao se comunicar com o Hub IoT e o DPS. Para obter mais informações, consulte a página de documentação do IoT Edge.