Condividi tramite


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 rifiuta 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

Queste suite di crittografia sono ancora supportate dal servizio Device Provisioning, ma verranno deprecate. Se possibile, usare le suite di crittografia consigliate.

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.

Certificato TLS del server

Durante un handshake TLS, DPS presenta certificati server con chiave RSA per la connessione dei client. Tutte le istanze dps nel cloud globale di Azure usano il certificato TLS rilasciato dal certificato DigiCert Global Root G2.

È anche consigliabile aggiungere i certificati Microsoft RSA Root Certificate Authority 2017 ai dispositivi per evitare interruzioni nel caso in cui DigiCert Global Root G2 venga ritirato in modo imprevisto. Anche se le migrazioni ca radice sono rare, per la resilienza nel panorama di sicurezza moderno è necessario preparare lo scenario IoT per l'improbabile evento in cui una CA radice è compromessa o è necessaria una migrazione CA radice di emergenza.

È consigliabile che tutti i dispositivi considerino attendibili le ca radice seguenti:

  • Radice CA DigiCert Global G2
  • Radice CA Microsoft RSA 2017

Per i collegamenti per scaricare questi certificati, vedere Dettagli dell'autorità di certificazione di Azure.

Attendibilità dei certificati negli SDK

Gli SDK per dispositivi Azure IoT si connettono e autenticano i dispositivi ai servizi Azure IoT. I diversi SDK gestiscono i certificati in modi diversi a seconda della lingua e della versione, ma la maggior parte si basa sull'archivio certificati attendibile del dispositivo anziché aggiungere i certificati direttamente nella codebase. Questo approccio offre flessibilità e resilienza per gestire le modifiche future nei certificati radice.

La tabella seguente riepiloga le versioni dell'SDK che supportano l'archivio certificati attendibile:

Azure IoT SDK per dispositivi Versioni supportate
A Tutte le versioni attualmente supportate
C# Tutte le versioni attualmente supportate
Java Versione 2.x.x e successive
Node.js Tutte le versioni attualmente supportate
Python Tutte le versioni attualmente supportate

Aggiunta di certificati

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

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
A 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 hub IoT'imposizione tls.

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.