Supporto TLS in hub IoT di Azure servizio Device Provisioning

DPS usa Transport Layer Security (TLS) per proteggere le connessioni dai dispositivi IoT.

Le versioni correnti del protocollo TLS supportate dal servizio Device Provisioning sono:

  • TLS 1.2

Limitare le connessioni a una versione minima di TLS

È possibile configurare le istanze del servizio Device Provisioning per consentire solo le connessioni client del dispositivo che usano una versione minima di TLS o versione successiva.

Importante

Attualmente dps supporta solo TLS 1.2, quindi non è necessario specificare la versione minima di TLS quando si crea un'istanza del servizio Device Provisioning. Questa funzionalità è disponibile per l'espansione futura.

A tale scopo, effettuare il provisioning di una nuova risorsa dps impostando la minTlsVersion proprietà su 1.2 nella specifica della risorsa DPS del modello di Azure Resource Manager. Il modello JSON di esempio seguente specifica la minTlsVersion proprietà per una nuova istanza del servizio Device Provisioning.

{
    "$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
            },
        }     
    ]
}

È possibile distribuire il modello con il comando seguente dell'interfaccia della riga di comando di Azure.

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

Per altre informazioni sulla creazione di risorse dps con i modelli di Resource Manager, vedere Configurare il servizio Device Provisioning con un modello di Azure Resource Manager.

La risorsa DPS creata con questa configurazione rifiuterà i dispositivi che tentano di connettersi con TLS versioni 1.0 e 1.1.

Nota

La minTlsVersion proprietà è di sola lettura e non può essere modificata dopo la creazione della risorsa dps. È quindi essenziale testare e verificare correttamente che tutti i dispositivi IoT siano compatibili con TLS 1.2 e le crittografie consigliate in anticipo.

Nota

In caso di failover, la minTlsVersion proprietà del servizio Device Provisioning rimarrà effettiva nell'area geografica associata dopo il failover.

Le istanze del servizio Device Provisioning applicano l'uso delle suite di crittografia consigliate e legacy seguenti:

Pacchetti di crittografia TLS 1.2 consigliati
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

Suite di crittografia legacy

Questi pacchetti di crittografia sono attualmente supportati dal servizio Device Provisioning, ma saranno deprecati. Usare le suite di crittografia consigliate, se possibile.

Opzione 1 (maggiore sicurezza)
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)
Opzione 2 (prestazioni migliori)
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)

Supporto tls reciproco

Quando le registrazioni DPS sono configurate per l'autenticazione X.509, tls reciproco (mTLS) è supportato dal servizio Device Provisioning.

Aggiunta di certificati

L'aggiunta e il filtro dei certificati del server TLS (noti anche come certificati foglia) e i certificati intermedi associati agli endpoint DPS sono fortemente sconsigliati perché Microsoft esegue spesso il rollback di questi certificati senza preavviso. Se necessario, aggiungere solo i certificati radice come descritto in questo post di blog di Azure IoT.

Usare TLS 1.2 negli SDK IoT

Usare i collegamenti seguenti per configurare TLS 1.2 e le crittografie consentite negli SDK del client IoT di Azure.

Lingua Versioni che supportano TLS 1.2 Documentazione
C Tag 2019-12-11 o versioni successive Collegamento
Python Versione 2.0.0 o successive Collegamento
C# Versione 1.21.4 o successive Collegamento
Java Versione 1.19.0 o successive Collegamento
NodeJS Versione 1.12.2 o successive Collegamento

Usare TLS 1.2 con hub IoT

hub IoT può essere configurato per l'uso di TLS 1.2 durante la comunicazione con i dispositivi. Per altre informazioni, vedere Deprecazione di TLS 1.0 e 1.1 nell'hub IoT.

Usare TLS 1.2 con IoT Edge

I dispositivi IoT Edge possono essere configurati per l'uso di TLS 1.2 durante la comunicazione con hub IoT e DPS. Per altre informazioni, vedere la pagina della documentazione di IoT Edge.