Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'hub IoT usa il protocollo Transport Layer Security (TLS) per la protezione delle connessioni dai dispositivi e dai servizi IoT.
Nota
hub IoT di Azure terminerà il supporto per TLS 1.0 e 1.1 in linea con l'annuncio del servizio wide di Azure per Tls 1.0 e 1.1 ritiro il 31 agosto 2025.
È quindi essenziale testare e verificare correttamente che tutti i dispositivi e i servizi IoT siano compatibili con TLS 1.2 e le crittografie consigliate in anticipo. È consigliabile usare la funzionalità minima di imposizione TLS come meccanismo per il test e la conformità.
Importante
È importante distinguere tra il supporto TLS 1.2 e l'imposizione di TLS 1.2. TLS 1.2 è supportato in tutti gli hub IoT, ovvero gli hub IoT possono gestire le connessioni usando il protocollo TLS 1.2. D'altra parte, l'imposizione di TLS 1.2 garantisce che l'hub IoT accetti solo le connessioni che usano TLS 1.2 o versione successiva. Quando l'imposizione di TLS 1.2 è abilitata, il servizio applica anche l'uso di pacchetti di crittografia sicuri , come descritto in precedenza. Gli aggiornamenti futuri consentiranno l'applicazione di TLS 1.2, consentendo pacchetti di crittografia non consigliati.
Attualmente, l'imposizione di TLS 1.2 è supportata solo nelle aree selezionate:
- Stati Uniti orientali
- Stati Uniti centro-meridionali
- West US 2 (Regione Ovest degli Stati Uniti 2)
- Governo degli Stati Uniti, Arizona
- US Gov Virginia (nota: il supporto di TLS 1.0/1.1 non è disponibile in questa area. L'imposizione di TLS 1.2 deve essere abilitata oppure la creazione dell'hub IoT avrà esito negativo.
Per scoprire la versione di TLS in cui sono in esecuzione i dispositivi dell'hub IoT, vedere la guida alla fine del supporto di TLS 1.0 e 1.1.
Supporto TLS reciproco
L'autenticazione TLS reciproca garantisce che il client autentica il certificato del server (hub IoT) e il server (hub IoT) autentica il client usando il certificato client X.509 o l'identificazione personale X.509. hub IoT esegue l'autorizzazione al termine dell'autenticazione.
Per i protocolli AMQP (Advanced Message Queuing Protocol) e Message Queuing Telemetry Transport (MQTT), hub IoT richiede un certificato client nell'handshake TLS iniziale. Se ne viene specificato uno, hub IoT autentica il certificato client e il client autentica il certificato hub IoT. Questo processo è detto autenticazione TLS reciproca. Quando l'hub IoT riceve un pacchetto di connessione MQTT o viene aperto un collegamento AMQP, l'hub IoT esegue l'autorizzazione per il client richiedente e determina se il client richiede l'autenticazione X.509. Se l'autenticazione TLS reciproca è stata completata e il client è autorizzato a connettersi come dispositivo, è consentito. Tuttavia, se il client richiede l'autenticazione X.509 e l'autenticazione client non è stata completata durante l'handshake TLS, hub IoT rifiuta la connessione.
Per il protocollo HTTP, quando il client effettua la prima richiesta, l'hub IoT verifica se il client richiede l'autenticazione X.509 e se l'autenticazione client è stata completata, l'hub IoT esegue l'autorizzazione. Se l'autenticazione client non è stata completata, hub IoT rifiuta la connessione
Dopo un handshake TLS riuscito, l'hub IoT può autenticare un dispositivo usando una chiave simmetrica o un certificato X.509. Per l'autenticazione basata su certificati, hub IoT convalida il certificato rispetto all'identificazione personale o all'autorità di certificazione (CA) specificata. Per altre informazioni, vedere Autenticare le identità con certificati X.509.
Certificato TLS del server dell'hub IoT
Durante un handshake TLS, hub IoT presenta i certificati server con chiave RSA per la connessione dei client. Tutti gli hub IoT nel cloud globale di Azure usano il certificato TLS rilasciato da DigiCert Global Root G2.
È consigliabile che tutti i dispositivi considerino attendibili i tre 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.
Le migrazioni ca radice sono rare. È consigliabile preparare sempre la soluzione IoT per l'evento improbabile che una CA radice sia compromessa e che sia necessaria una migrazione ca radice di emergenza.
Pacchetti di crittografia
Per rispettare i criteri di sicurezza di Azure per una connessione sicura, l'hub IoT consiglia le suite di crittografia RSA ed ECDSA seguenti che richiedono l'imposizione minima di TLS 1.2:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Le suite di crittografia seguenti sono attualmente consentite in hub IoT. Tuttavia, queste suite di crittografia non sono più consigliate dalle linee guida per la sicurezza di Azure. Questi pacchetti di crittografia funzionano con TLS versioni 1.0, 1.1 e 1.2.
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_CBC_SHA
Un client può suggerire un elenco di pacchetti di crittografia superiori da usare durante ClientHello
. Tuttavia, l'hub IoT potrebbe non supportare alcuni di essi, ad esempio ECDHE-ECDSA-AES256-GCM-SHA384
. In questo caso, l'hub IoT tenta di seguire la preferenza del client, ma alla fine negozia la suite di crittografia con ServerHello
.
Aggiornare l'hub IoT al supporto tls 1.2
Dopo aver creato un hub IoT, la minTlsVersion
proprietà può essere aggiornata usando il portale di Azure, l'interfaccia della riga di comando o gli SDK. Se è necessario eseguire l'aggiornamento per applicare l'hub IoT per l'uso di pacchetti di crittografia TLS 1.2 e sicuri (consentiti solo nelle aree selezionate) o per impostare il supporto TLS 1.2 (supportato in tutte le aree), è possibile eseguire questa procedura.
Per aggiornare l'hub IoT per supportare TLS 1.2 e/o applicare pacchetti di crittografia avanzata nel portale di Azure:
Accedere all'hub IoT esistente nel portale di Azure.
Nella scheda Panoramica del menu a sinistra fare clic sul collegamento Versione minima TLS dalla sezione Informazioni di base.
Nella finestra laterale Versione minima di TLS selezionare 1.2 per assicurarsi che solo i dispositivi che supportano TLS 1.2 o versione successiva possano connettersi.
Fare clic su Aggiorna.
Nota
È possibile aggiornare l'hub IoT a TLS 1.2 in TUTTE le aree pubbliche. Tuttavia, se si aggiorna un hub IoT in una delle aree selezionate (Stati Uniti orientali, Stati Uniti centro-meridionali, Stati Uniti occidentali 2, US Gov Arizona e US Gov Virginia), verranno applicate suite di crittografia più avanzate.
Applicare hub IoT per l'uso di TLS 1.2 e pacchetti di crittografia avanzata
Per garantire che i dispositivi IoT siano TLS 1.2 e la conformità avanzata delle suite di crittografia, è possibile applicare la conformità usando la funzionalità minima di imposizione TLS in hub IoT di Azure.
Attualmente questa funzionalità è disponibile solo nelle aree seguenti e durante la creazione di hub IoT (altre aree di Azure saranno supportate nel 2025):
- Stati Uniti orientali
- Stati Uniti centro-meridionali
- West US 2 (Regione Ovest degli Stati Uniti 2)
- Governo degli Stati Uniti, Arizona
- US Gov Virginia (il supporto TLS 1.0/1.1 non è disponibile in questa area: l'imposizione di TLS 1.2 deve essere abilitata o la creazione dell'hub IoT non riesce)
Per abilitare l'imposizione di pacchetti di crittografia TLS 1.2 e sicuri in portale di Azure:
Partendo dalla procedura guidata di creazione dell'hub IoT nel portale Azure
Scegliere un'area da una nell'elenco precedente.
In Gestione -> Avanzata -> Transport Layer Security (TLS) -> Versione minima di TLS selezionare 1.2. Questa impostazione viene visualizzata solo per l'hub IoT creato nell'area supportata.
Selezionare Crea
Connettere i dispositivi IoT a questa hub IoT
Per usare il modello di Resource Manager per la creazione, effettuare il provisioning di un nuovo hub IoT in una delle aree supportate e impostare la proprietà minTlsVersion
su 1.2
nella specifica della risorsa:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/IotHubs",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-resource-name>",
"location": "<any-of-supported-regions-below>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "<your-hubs-SKU-name>",
"tier": "<your-hubs-SKU-tier>",
"capacity": 1
}
}
]
}
La risorsa hub IoT creata usando questa configurazione rifiuta i client di dispositivi e servizi che tentano di connettersi con TLS versioni 1.0 e 1.1. Analogamente, l'handshake TLS viene rifiutato se il ClientHello
messaggio non elenca alcuna delle crittografie consigliate.
Nota
In caso di failover, la minTlsVersion
proprietà del hub IoT rimane effettiva nell'area geografica associata dopo il failover.
Controllo delle versioni di TLS per i dispositivi hub IoT
hub IoT di Azure può fornire log di diagnostica per diverse categorie che possono essere analizzate usando i log di Monitoraggio di Azure. Nel log delle connessioni è possibile trovare la versione TLS per i dispositivi hub IoT.
Per visualizzare questi registri, eseguire la procedura seguente:
- Nel portale di Azure passare all'hub IoT.
- Nel menu delle risorse in Monitoraggio selezionare Impostazioni di diagnostica. Verificare che le impostazioni di diagnostica abbiano il segno di spunta "Connessioni".
- Nel menu delle risorse in Monitoraggio selezionare Log.
- Immettere la query seguente:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| where OperationName == "deviceConnect"
| extend props_json = parse_json(properties_s)
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
- Un esempio dei risultati della query è simile al seguente:
- Nota: la query della versione TLS non è disponibile per i dispositivi che usano connessioni HTTPS.
Configurazione TLS per SDK e IoT Edge
Usare i collegamenti seguenti per configurare TLS 1.2 e le crittografie consentite negli SDK client hub IoT.
Lingua | Versioni che supportano TLS 1.2 | Documentazione |
---|---|---|
A | Tag 2019-12-11 o versioni successive | Collegamento |
Pitone | Versione 2.0.0 o successive | Collegamento |
C# | Versione 1.21.4 o successive | Collegamento |
Giava | Versione 1.19.0 o successive | Collegamento |
Node.js | Versione 1.12.2 o successive | Collegamento |
È possibile configurare l'uso di TLS 1.2 da parte dei dispositivi IoT Edge durante la comunicazione con l'hub IoT. A tale scopo, vedere la pagina della documentazione di IoT Edge.
Certificato TLS del server ECC (Elliptic Curve Cryptography)
Pur offrendo una sicurezza simile ai certificati RSA, la convalida dei certificati ECC (con pacchetti di crittografia solo ECC) usa fino al 40% meno calcolo, memoria e larghezza di banda. Questi risparmi sono importanti per i dispositivi IoT grazie ai profili e alla memoria più piccoli e supportano i casi d'uso in ambienti con larghezza di banda di rete limitata.
Per usare il certificato server ECC di hub IoT:
- Verificare che tutti i dispositivi considerino attendibili le ca radice seguenti:
- Radice CA DigiCert Global G2
- Radice CA Microsoft RSA 2017
-
Configurare il client in modo che includa solo pacchetti di crittografia ECDSA ed escludere quelli RSA. Questi sono i pacchetti di crittografia supportati per il certificato ECC:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- Connettere il client all'hub IoT.
Negoziazione della lunghezza massima del frammento TLS
L'hub IoT supporta anche la negoziazione della lunghezza massima del frammento TLS, talvolta nota come negoziazione delle dimensioni dei frame TLS. Questa funzionalità è disponibile in anteprima pubblica.
Utilizzare questa funzionalità per specificare la lunghezza massima del frammento di testo non crittografato su un valore inferiore al valore predefinito di 2^14 byte. Dopo la negoziazione, l'hub IoT e il client iniziano a frammentare i messaggi per garantire che tutti i frammenti siano inferiori alla lunghezza negoziata. Questo comportamento è utile per calcolare o limitare la memoria dei dispositivi. Per altre informazioni, vedere la specifica ufficiale dell'estensione TLS.
Il supporto ufficiale dell'SDK per questa funzionalità di anteprima pubblica non è ancora disponibile. Attività iniziali
- Creare un hub IoT.
- Quando si usa OpenSSL, chiamare SSL_CTX_set_tlsext_max_fragment_length per specificare le dimensioni del frammento.
- Connettere il client al hub IoT.
Aggiunta di certificati
L'aggiunta e il filtro dei certificati del server TLS e dei certificati intermedi associati agli endpoint hub IoT è fortemente sconsigliato 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.
Passaggi successivi
- Per altre informazioni sulla sicurezza e il controllo di accesso dell'hub IoT, vedere Controllare l'accesso all'hub IoT.
- Per altre informazioni sull'uso del certificato X509 per l'autenticazione del dispositivo, vedere Autenticazione del dispositivo con certificati CA X.509