Share via


Tls-ondersteuning (Transport Layer Security) in IoT Hub

IoT Hub maakt gebruik van Transport Layer Security (TLS) om verbindingen van IoT-apparaten en -services te beveiligen.

Note

Azure IoT Hub beëindigt de ondersteuning voor TLS 1.0 en 1.1 in overeenstemming met de aankondiging van de Azure-service voor tls 1.0 en 1.1 buiten gebruik op 31 augustus 2025. Daarnaast biedt IoT Hub vanaf 31 augustus 2025 geen ondersteuning meer voor zwakke coderingssuites. Alleen aanbevolen sterke coderingssuites worden ondersteund voor zowel bestaande als nieuwe IoT Hubs.

Het is daarom essentieel dat u uw IoT-apparaten en -services goed test en valideert dat ze compatibel zijn met TLS 1.2 en de aanbevolen coderingen van tevoren. Het wordt ten zeerste aanbevolen om de minimale TLS-afdwingingsfunctie te gebruiken als het mechanisme voor testen en naleving.

Important

Het is belangrijk om onderscheid te maken tussen TLS 1.2-ondersteuning en TLS 1.2-afdwinging. TLS 1.2 wordt ondersteund op alle IoT Hubs, wat betekent dat IoT Hubs verbindingen kan verwerken met behulp van het TLS 1.2-protocol. Aan de andere kant zorgt TLS 1.2-afdwinging ervoor dat IoT Hub alleen verbindingen accepteert met BEHULP van TLS 1.2 of hoger. Wanneer TLS 1.2 afdwinging is ingeschakeld, dwingt de service ook het gebruik van sterke coderingssuites af.

Op dit moment wordt TLS 1.2-afdwinging alleen ondersteund in regio's in de openbare cloud.

Raadpleeg de ondersteuningshandleiding voor TLS 1.0 en 1.1 als u wilt zien welke versie van TLS uw IoT Hub-apparaten worden uitgevoerd.

Wederzijdse TLS-ondersteuning

Wederzijdse TLS-verificatie zorgt ervoor dat de client het servercertificaat (IoT Hub) verifieert en de server (IoT Hub) de client verifieert met behulp van X.509-clientcertificaat of X.509-vingerafdruk. IoT Hub voert autorisatie uit nadat de verificatie is voltooid.

Voor de protocollen Advanced Message Queuing Protocol (AMQP) en Message Queuing Telemetry Transport (MQTT) vraagt IoT Hub een clientcertificaat aan in de eerste TLS-handshake. Als er een is opgegeven, verifieert IoT Hub het clientcertificaat en verifieert de client het IoT Hub-certificaat. Dit proces wordt wederzijdse TLS-verificatie genoemd. Wanneer IoT Hub een MQTT-verbindingspakket ontvangt of een AMQP-koppeling wordt geopend, voert IoT Hub autorisatie uit voor de aanvragende client en bepaalt of de client X.509-verificatie vereist. Als wederzijdse TLS-verificatie is voltooid en de client gemachtigd is om verbinding te maken als het apparaat, is dit toegestaan. Als de client echter X.509-verificatie vereist en clientverificatie niet is voltooid tijdens de TLS-handshake, weigert IoT Hub de verbinding.

Wanneer de client voor het eerst een aanvraag indient, controleert IoT Hub bij HTTP-protocol of voor de client X.509-verificatie is vereist en of clientverificatie is voltooid, dan voert IoT Hub autorisatie uit. Als clientverificatie niet is voltooid, weigert IoT Hub de verbinding

Na een geslaagde TLS-handshake kan IoT Hub een apparaat verifiëren met behulp van een symmetrische sleutel of een X.509-certificaat. Voor verificatie op basis van certificaten valideert IoT Hub het certificaat op basis van de vingerafdruk of certificeringsinstantie (CA) die u opgeeft. Zie Identiteiten verifiëren met X.509-certificaten voor meer informatie.

TLS-certificaat van ioT Hub-server

Tijdens een TLS-handshake presenteert IoT Hub RSA-servercertificaten om clients te verbinden. Alle IoT-hubs in de globale Azure-cloud gebruiken het TLS-certificaat dat is uitgegeven door de Global Root G2 van DigiCert.

We raden u ten zeerste aan dat alle apparaten de volgende drie basis-CA's vertrouwen:

  • DigiCert Global G2-basis-CA
  • Microsoft RSA root CA 2017

Zie de details van de Azure-certificeringsinstantie voor koppelingen om deze certificaten te downloaden.

Basis-CA-migraties zijn zeldzaam. U moet uw IoT-oplossing altijd voorbereiden op het onwaarschijnlijke geval dat een basis-CA is aangetast en dat er een nood-CA-migratie nodig is.

Cryptografische suites

Vanaf 31 augustus 2025 dwingt IoT Hub het gebruik van aanbevolen sterke coderingssuites af voor alle bestaande en nieuwe IoT Hubs. Niet-aanbevolen (zwakke) coderingssuites worden niet ondersteund na deze datum.

IoT Hub biedt alleen ondersteuning voor de volgende RSA- en ECDSA-coderingssuites om te voldoen aan het Azure-beveiligingsbeleid voor een beveiligde verbinding:

  • 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

ECDSA-coderingssuites zijn alleen beschikbaar in openbare cloudregio's.

De volgende niet-aanbevolen coderingssuites zijn toegestaan op hubs zonder minTlsVersion:1.2 tot 31 augustus 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

Een client kan een lijst met hogere coderingssuites voorstellen die tijdens ClientHellohet gebruik moeten worden gebruikt. IoT Hub biedt echter mogelijk geen ondersteuning voor sommige hiervan, ECDHE-ECDSA-AES256-GCM-SHA384bijvoorbeeld. In dit geval probeert IoT Hub de voorkeur van de client te volgen, maar uiteindelijk te onderhandelen over de coderingssuite met ServerHello.

Note

Wanneer u een ECDSA- of ECDHE-codering gebruikt, moet de client de supported_groups extensie in de ClientHello met een geldige groep opgeven. Wanneer u verbinding maakt met een clientcertificaat, moet de client de curve opnemen die in dat clientcertificaat wordt gebruikt in supported_groups de extensie.

IoT Hub bijwerken naar TLS 1.2 ondersteuning

Zodra een IoT Hub is gemaakt, kan de minTlsVersion eigenschap worden bijgewerkt met behulp van Azure Portal, CLI of SDK's. Als u ioT Hub wilt bijwerken om TLS 1.2 en sterke coderingssuites (alleen toegestaan in geselecteerde regio's) te gebruiken of TLS 1.2-ondersteuning in te stellen (ondersteund in alle regio's), kunt u dit doen door deze stappen uit te voeren.

IoT Hub bijwerken ter ondersteuning van TLS 1.2 en/of sterke coderingssuites afdwingen in Azure Portal:

  1. Navigeer naar uw bestaande IoT Hub in Azure Portal.

  2. Klik op het tabblad Overzicht in het linkermenu op de koppeling Minimale TLS-versie in de sectie Essentials.

    Schermopname die laat zien hoe u de minimale versie van TLS-ondersteuning kiest.

  3. Selecteer in het venster minimale TLS-versie 1.2 om ervoor te zorgen dat alleen apparaten die TLS 1.2 of hoger ondersteunen, verbinding kunnen maken.

  4. Klik op bijwerken.

    Schermopname van het inschakelen van TLS 1.2-ondersteuning.

Note

U kunt uw IoT Hub bijwerken naar TLS 1.2 in alle openbare cloudregio's.

IoT Hub afdwingen voor het gebruik van TLS 1.2 en sterke coderingssuites

Om ervoor te zorgen dat uw IoT-apparaten TLS 1.2 en naleving van sterke coderingssuites zijn, kunt u naleving afdwingen met behulp van minimale TLS-afdwingingsfunctie in Azure IoT Hub.

Note

Deze functie is momenteel alleen beschikbaar in openbare cloudregio's.

TLS 1.2 en sterke coderingssuites inschakelen en afdwingen in Azure portal:

  1. Ga naar de IoT Hub-wizard in de Azure portal.

  2. Kies een regio in de lijst met ondersteunde regio's.

  3. Onder Beheer -> Geavanceerd -> Transport Layer Security (TLS) -> Minimale TLS-versie, selecteer 1.2. Deze instelling wordt alleen weergegeven voor een IoT-hub die is gemaakt in een ondersteunde regio.

    Schermopname van het inschakelen van TLS 1.2-afdwinging tijdens het maken van ioT-hubs.

  4. Selecteer Creëren

  5. Verbind uw IoT-apparaten met deze IoT Hub.

Als u een ARM-sjabloon wilt gebruiken voor het aanmaken, voorziet u een nieuwe IoT Hub in een van de ondersteunde regio's en stelt u de minTlsVersion eigenschap in op 1.2 in de resourcespecificatie.

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

De gemaakte IoT Hub-resource met deze configuratie weigert apparaat- en serviceclients die verbinding proberen te maken met TLS-versies 1.0 en 1.1. Op dezelfde manier wordt de TLS-handshake geweigerd als in het ClientHello bericht geen van de aanbevolen coderingen wordt vermeld.

Note

Na een failover blijft de minTlsVersion eigenschap van uw IoT Hub effectief in de geografisch gekoppelde regio na een failover.

TLS-versies en coderingssuites voor IoT Hub-apparaten controleren

Azure IoT Hub biedt de mogelijkheid om de TLS-versie, coderingssuites en andere metrische gegevens over apparaatverbindingen te controleren om de beveiliging van IoT-apparaten te bewaken. U kunt metrische gegevens of diagnostische logboeken van IoT Hub gebruiken om het gebruik van TLS-versies en andere gerelateerde eigenschappen, zoals Cipher Suites, bij te houden.

Note

Deze functie is momenteel alleen beschikbaar in openbare cloudregio's.

TLS-versies en coderingssuites controleren met behulp van metrische IoT Hub-gegevens

Als u wilt valideren dat apparaatverkeer naar IoT Hub TLSv1.2 en sterke coderingssuites gebruikt, kunt u de metrische gegevens van IoT Hub controleren. Hiermee kunt u filteren op TLS-versie of coderingssuite en het aantal geslaagde verbindingen controleren.

  1. Ga in Azure Portal naar uw IoT-hub.

  2. Selecteer In het menu aan de linkerkant onder Bewakingde optie Metrische gegevens.

  3. Voeg de metrische waarde Geslaagde verbinding toe.

    Schermopname die laat zien hoe u de meetwaarde Geslaagde verbinding toevoegt.

  4. Filter op TLS-versie of coderingssuite door de knop Filter toevoegen te selecteren en de juiste eigenschap, TLS-versie of coderingssuite te kiezen, operator, bijvoorbeeld '=', en waarde, bijvoorbeeld TLSv1.2.

    Schermopname die laat zien hoe u filtert op TLS-versie of Cipher Suite.

  5. Nadat u het filter hebt toegepast, ziet u de som van apparaten met geslaagde IoT Hub-verbindingen op basis van de gefilterde eigenschap en waarde(s).

TLS-versies en coderingssuites controleren met behulp van diagnostische logboeken van IoT Hub

Azure IoT Hub kan diagnostische logboeken bieden voor verschillende categorieën die kunnen worden geanalyseerd met behulp van Azure Monitor-logboeken. In het logboek met verbindingen vindt u de TLS-versie en coderingssuite voor uw IoT Hub-apparaten.

Volg deze stappen om deze logboeken weer te geven:

  1. Ga in Azure Portal naar uw IoT-hub.

  2. Selecteer diagnostische instellingen in het menu aan de linkerkant onder Bewaking. Zorg ervoor dat diagnostische instellingen 'Verbindingen' aangevinkt hebben.

  3. Selecteer Logboeken in het menu aan de linkerkant onder Bewaking.

  4. Voer de volgende query in:

    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. Een voorbeeld van de queryresultaten ziet er als volgt uit:

    Diagram met de query voor de TLS-versie van het apparaat.

Note

TLS-versiequery is niet beschikbaar voor apparaten die HTTPS-verbindingen gebruiken.

TLS-configuratie voor SDK en IoT Edge

Gebruik de volgende koppelingen om TLS 1.2 en toegestane coderingen te configureren in SDK's van de IoT Hub-client.

Language Versies die TLS 1.2 ondersteunen Documentation
C Tag 2019-12-11 of hoger Link
Python Versie 2.0.0 of hoger Link
C# Versie 1.21.4 of hoger Link
Java Versie 1.19.0 of hoger Link
Node.js Versie 1.12.2 of hoger Link

IoT Edge-apparaten kunnen worden geconfigureerd voor het gebruik van TLS 1.2 tijdens de communicatie met IoT Hub. Gebruik hiervoor de documentatiepagina van IoT Edge.

TLS-certificaat voor Elliptic Curve Cryptography (ECC)-server

Ecc-certificaatvalidatie (met alleen ECC-coderingssuites) biedt een vergelijkbare beveiliging als RSA-certificaten en maakt gebruik van maximaal 40% minder rekenkracht, geheugen en bandbreedte. Deze besparingen zijn belangrijk voor IoT-apparaten vanwege hun kleinere profielen en geheugen en ter ondersteuning van use cases in beperkte omgevingen met netwerkbandbreedte.

Het ECC-servercertificaat van IoT Hub gebruiken:

  1. Zorg ervoor dat alle apparaten de volgende basis-CA's vertrouwen:
    • DigiCert Global G2-basis-CA
    • Microsoft RSA root CA 2017
  2. Configureer uw client om alleen ECDSA-coderingssuites op te nemen en RSA-suites uit te sluiten. Dit zijn de ondersteunde coderingssuites voor het ECC-certificaat:
    • 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. Verbind uw client met de IoT-hub.

Note

Deze functie is momenteel alleen beschikbaar in openbare cloudregio's.

Onderhandeling over maximale fragmentlengte bij TLS

IoT Hub ondersteunt ook onderhandeling over maximale fragmentlengte van TLS, ook wel onderhandelingen over DE TLS-framegrootte genoemd. Deze functie is beschikbaar voor openbare preview.

Gebruik deze functie om de maximale lengte van tekstfragmenten zonder opmaak op te geven tot een waarde die kleiner is dan de standaardwaarde 2^14 bytes. Zodra er is onderhandeld, beginnen IoT Hub en de client berichten te fragmenteren om ervoor te zorgen dat alle fragmenten kleiner zijn dan de onderhandelde lengte. Dit gedrag is handig voor apparaten met beperkte rekenkracht of geheugen. Zie de officiële TLS-extensiespecificatie voor meer informatie.

Officiële SDK-ondersteuning voor deze openbare preview-functie is nog niet beschikbaar. Aan de slag

  1. Een IoT Hub maken.
  2. Wanneer u OpenSSL gebruikt, roept u SSL_CTX_set_tlsext_max_fragment_length aan om de fragmentgrootte op te geven.
  3. Verbind uw client met de IoT Hub.

Note

Deze functie is momenteel alleen beschikbaar in openbare cloudregio's.

Certificaat pinnen

Het vastmaken en filteren van certificaten en tussenliggende certificaten die zijn gekoppeld aan IoT Hub-eindpunten wordt sterk afgeraden, omdat Microsoft deze certificaten regelmatig met weinig of geen kennisgeving implementeert. Als u dat wilt, moet u alleen de basiscertificaten vastmaken zoals beschreven in dit Azure IoT-blogbericht.

Volgende stappen