Suporte TLS no serviço de fornecimento de dispositivos Hub IoT do Azure (DPS)

O DPS utiliza a Segurança da Camada de Transporte (TLS) para proteger as ligações dos dispositivos IoT.

As versões atuais do protocolo TLS suportadas por DPS são:

  • TLS 1.2

Restringir as ligações a uma versão TLS mínima

Pode configurar as suas instâncias DPS para permitir apenas ligações ao cliente do dispositivo que utilizem uma versão TLS mínima ou maior.

Importante

Atualmente, o DPS apenas suporta O TLS 1.2, pelo que não há necessidade de especificar a versão mínima TLS quando cria uma instância DPS. Esta funcionalidade está prevista para a expansão futura.

Para isso, disposi um novo recurso DPS que define a minTlsVersion propriedade no 1.2 seu Azure Resource Manager especificação de recurso DPS do modelo. O modelo de exemplo a seguir JSON 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
            },
        }     
    ]
}

Pode implantar o modelo com o seguinte comando Azure CLI.

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

Para obter mais informações sobre a criação de recursos DPS com modelos de Resource Manager, consulte, Configurar DPS com um modelo de Resource Manager Azure.

O recurso DPS criado através desta configuração recusará dispositivos que tentem ligar-se através das versões TLS 1.0 e 1.1.

Nota

A minTlsVersion propriedade é apenas de leitura e não pode ser alterada uma vez que o seu recurso DPS é criado. Por isso, é essencial que teste e valide corretamente que todos os seus dispositivos IoT sejam compatíveis com tLS 1.2 e as cifras recomendadas com antecedência.

Nota

Após os failovers, a minTlsVersion propriedade do seu DPS permanecerá eficaz na região geo-emparelhada pós-failover.

As instâncias DPS impõem a utilização das seguintes suítes de cifra recomendadas e antigas:

Suítes de cifra recomendadas TLS 1.2
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

Suítes de cifra legacy

Estas suítes de cifra ainda são suportadas por DPS, mas serão amortizadas. Utilize as suítes de cifra recomendadas 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)

Apoio mútuo do TLS

Quando as inscrições de DPS são configuradas para a autenticação X.509, o TLS mútuo (mTLS) é suportado por DPS.

Fixação de certificados

A fixação e filtragem dos certificados de servidores TLS (certificados de folha aka) e certificados intermédios associados aos pontos finais DPS são fortemente desencorajados, uma vez que a Microsoft frequentemente lança estes certificados com pouco ou nenhum aviso. Se for necessário, apenas fixar os certificados de raiz descritos neste post de blog Azure IoT.

Utilizar TLS 1.2 nos SDKs IoT

Utilize os links abaixo para configurar tLS 1.2 e tenha permitido cifras nos SDKs clienteS Azure IoT.

Linguagem 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

Utilize TLS 1.2 com Hub IoT

Hub IoT pode ser configurado para utilizar o TLS 1.2 ao comunicar com os dispositivos. Para mais informações, consulte Aprecação de TLS 1.0 e 1.1 para Hub IoT.

Utilize TLS 1.2 com IoT Edge

IoT Edge dispositivos podem ser configurados para utilizar OLS 1.2 quando comunicam com Hub IoT e DPS. Para mais informações, consulte a página de documentação IoT Edge.