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.
Crittografie consigliate
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.