Condividi tramite


Supporto TLS (Transport Layer Security) nell'hub IoT

L'hub IoT usa il protocollo Transport Layer Security (TLS) per la protezione delle connessioni dai dispositivi e dai servizi IoT.

Note

L'hub IoT di Azure terminerà il supporto per TLS 1.0 e 1.1, in linea con l'annuncio di servizio a livello di Azure relativo al ritiro di TLS 1.0 e 1.1, il 31 agosto 2025. Inoltre, l'hub IoT non supporterà più suite di crittografia deboli a partire dal 31 agosto 2025. Solo i pacchetti di crittografia sicuri consigliati saranno supportati sia per gli hub IoT esistenti che per i nuovi hub IoT.

È quindi essenziale testare e verificare correttamente che tutti i dispositivi e i servizi IoT siano compatibili con TLS 1.2, oltre alle crittografie consigliate in anticipo. È consigliabile usare la funzionalità minima di imposizione TLS come meccanismo per il test e la conformità.

Important

È 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 suite di crittografia complesse.

Attualmente, l'imposizione di TLS 1.2 è supportata solo nelle aree del cloud pubblico.

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 autentichi il certificato del server (hub IoT) e che il server (hub IoT) autentichi il client usando il certificato client X.509 o l'identificazione personale X.509. L'hub IoT concede l'autorizzazione al termine dell'autenticazione.

L'hub IoT richiede un certificato client nell'hanshake TLS iniziale per i protocolli AMQP (Advanced Message Queuing Protocol) e MQTT (Message Queuing Telemetry Transport). Se ne viene specificato uno, l'hub IoT autentica il certificato client e il client autentica il certificato dell'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, viene stabilita la connessione. Tuttavia, se il client richiede l'autenticazione X.509 e l'autenticazione client non è stata completata durante l'handshake TLS, l'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, l'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, l'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 l'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:

  • CA 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 delle CA radice sono rare. È consigliabile preparare sempre la soluzione IoT nel caso improbabile che un'autorità di certificazione radice sia compromessa e che sia necessaria una migrazione di emergenza all'autorità di certificazione radice.

Pacchetti di crittografia

A partire dal 31 agosto 2025, l'hub IoT applica l'uso di suite di crittografia avanzate consigliate per tutti gli hub IoT nuovi e esistenti. Le suite di crittografia non consigliate (deboli) non sono supportate oltre questa data.

Per rispettare i criteri di sicurezza di Azure per una connessione sicura, l'hub IoT supporta solo le suite di crittografia RSA ed ECDSA seguenti:

  • 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

Note

I pacchetti di crittografia ECDSA sono disponibili solo nelle aree del cloud pubblico.

I pacchetti di crittografia non consigliati seguenti sono consentiti negli hub senza minTlsVersion:1.2 fino al 31 agosto 2025:

  • 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.

Note

Quando si usa una crittografia ECDSA o ECDHE, il client deve fornire l'estensione supported_groups in ClientHello con un gruppo valido. Quando ci si connette con un certificato client, il client deve includere la curva usata nel certificato client nella relativa supported_groups estensione.

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:

  1. Accedere all'hub IoT esistente nel portale di Azure.

  2. Nella scheda Panoramica del menu a sinistra fare clic sul collegamento Versione minima TLS dalla sezione Informazioni di base.

    Screenshot che mostra come scegliere la versione minima del supporto TLS.

  3. 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.

  4. Fare clic su Update (Aggiorna).

    Screenshot che mostra come attivare il supporto TLS 1.2.

Note

È possibile aggiornare l'hub IoT a TLS 1.2 in tutte le aree del cloud pubblico.

Applicare l'hub IoT per l'uso di TLS 1.2 e le suite di crittografia avanzata

Per garantire che i dispositivi IoT siano compatibili con TLS 1.2 e le suite di crittografia avanzata, è possibile imporre la conformità usando la funzionalità di imposizione minima di TLS nell'hub IoT di Azure.

Note

Attualmente questa funzionalità è disponibile solo nelle aree del cloud pubblico.

Per abilitare l'imposizione delle suite di crittografia avanzata TLS 1.2 nel portale di Azure:

  1. Passare alla creazione guidata dell'hub IoT nel portale di Azure.

  2. Scegliere un'area dall'elenco delle aree supportate.

  3. 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.

    Screenshot che mostra come attivare l'imposizione di TLS 1.2 durante la creazione dell'hub IoT.

  4. Selezionare Crea

  5. Connettere i dispositivi IoT a questo 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 dell'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 messaggio ClientHello non elenca alcuna delle crittografie consigliate.

Note

In caso di failover, la minTlsVersion proprietà dell'hub IoT rimane effettiva nell'area geografica associata dopo il failover.

Controllo delle versioni e dei pacchetti di crittografia TLS per i dispositivi dell'hub IoT

L'hub IoT di Azure offre la possibilità di controllare la versione TLS, i pacchetti di crittografia e altre metriche di connessione del dispositivo per monitorare la sicurezza dei dispositivi IoT. È possibile usare le metriche dell'hub IoT o i log di diagnostica per tenere traccia dell'utilizzo della versione tls e di altre proprietà correlate, ad esempio Cipher Suites.

Note

Attualmente questa funzionalità è disponibile solo nelle aree del cloud pubblico.

Controllo delle versioni e dei pacchetti di crittografia TLS con le metriche dell'hub IoT

Se si vuole verificare che il traffico del dispositivo verso l'hub IoT usi gruppi di crittografia TLSv1.2 e sicuri, è possibile controllare le metriche dell'hub IoT. In questo modo è possibile filtrare in base alla versione o alla suite di crittografia TLS e controllare il numero di connessioni riuscite.

  1. Nel portale di Azure passare all'hub IoT.

  2. Nel menu a sinistra in Monitoraggio selezionare Metriche.

  3. Aggiungere la metrica Successful Connects.

    Screenshot che mostra come aggiungere la metrica Successful Connects.

  4. Filtrare in base alla versione TLS o alla suite di crittografia selezionando il pulsante Aggiungi filtro e scegliendo la proprietà appropriata, la versione TLS o la suite di crittografia, l'operatore, ad esempio "=", e il valore, ad esempio TLSv1.2.

    Screenshot che mostra come filtrare in base alla versione TLS o alla suite di crittografia.

  5. Dopo aver applicato il filtro, viene visualizzata la somma dei dispositivi con connessioni dell'hub IoT riuscite in base alla proprietà filtrata e ai valori.

Controllo delle versioni e dei pacchetti di crittografia TLS tramite i log di diagnostica dell'hub IoT

L'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 e la suite di crittografia TLS per i dispositivi dell'hub IoT.

Per visualizzare questi registri, eseguire la procedura seguente:

  1. Nel portale di Azure passare all'hub IoT.

  2. Nel menu a sinistra in Monitoraggio selezionare Impostazioni di diagnostica. Verificare che le impostazioni di diagnostica abbiano selezionato "Connessioni".

  3. Nel menu a sinistra in Monitoraggio selezionare Log.

  4. 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
    
  5. Un esempio dei risultati della query è simile al seguente:

    Diagramma che mostra la query per la versione TLS del dispositivo.

Note

La query sulla versione di 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.

Language Versioni che supportano TLS 1.2 Documentation
C Tag 2019-12-11 o versioni successive Link
Python Versione 2.0.0 o successive Link
C# Versione 1.21.4 o successive Link
Java Versione 1.19.0 o successive Link
Node.js Versione 1.12.2 o successive Link

È 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 dell'hub IoT:

  1. Assicurarsi che tutti i dispositivi considerino attendibili le seguenti autorità di certificazione radice:
    • CA radice CA DigiCert Global G2
    • Radice CA Microsoft RSA 2017
  2. Configurare il client in modo che includa solo pacchetti di crittografia ECDSA ed escludere quelli RSA. Questi sono le suite di crittografia supportate 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
  3. Connettere il client all'hub IoT.

Note

Attualmente questa funzionalità è disponibile solo nelle aree del cloud pubblico.

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

  1. Creare un hub IoT.
  2. Quando si usa OpenSSL, chiamare SSL_CTX_set_tlsext_max_fragment_length per specificare le dimensioni del frammento.
  3. Connettere il client all'hub IoT.

Note

Attualmente questa funzionalità è disponibile solo nelle aree del cloud pubblico.

Associazione del certificato

L'associazione del certificato e il filtro dei certificati del server TLS e dei certificati intermedi associati agli endpoint dell'hub IoT sono fortemente sconsigliati, perché Microsoft esegue spesso il rollback di questi certificati con poco preavviso o senza preavviso. Se necessario, aggiungere solo i certificati radice come descritto in questo post di blog di Azure IoT.

Passaggi successivi