Tls-ondersteuning (Transport Layer Security) in IoT Hub
IoT Hub gebruikt Transport Layer Security (TLS) om verbindingen van IoT-apparaten en -services te beveiligen. Momenteel worden drie versies van het TLS-protocol ondersteund, namelijk versie 1.0, 1.1 en 1.2.
TLS 1.0 en 1.1 worden beschouwd als verouderd en zijn gepland voor afschaffing. Zie TLS 1.0 en 1.1 voor IoT Hub voor meer informatie. Gebruik TLS 1.2 als enige TLS-versie wanneer u verbinding maakt met IoT Hub om toekomstige problemen te voorkomen.
TLS-certificaat van de server van IoT Hub
Tijdens een TLS-handshake geeft IoT Hub RSA-servercertificaten weer om clients te verbinden. De hoofdmap is de Baltimore Cybertrust Root CA. Omdat de Baltimore-hoofdmap aan het einde van het leven is, migreren we naar een nieuwe hoofdmap met de naam DigiCert Global G2. Deze wijziging heeft invloed op alle apparaten die momenteel verbinding maken met IoT Hub. Als u zich wilt voorbereiden op deze migratie en voor alle andere details, raadpleegt u de update van het IoT TLS-certificaat.
ELLIPTIC Curve Cryptography-server (ECC) TLS-certificaat (preview)
IoT Hub TLS-certificaat van ECC-server is beschikbaar voor openbare preview. Hoewel het biedt vergelijkbare beveiliging als RSA-certificaten, gebruikt ECC-certificaatvalidatie (met alleen ECC-coderingssuites) tot 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. De hoofdmap van het ECC-servercertificaat is DigiCert Global Root G3.
Ga als volgt te werk om een voorbeeld te bekijken van het ECC-servercertificaat van IoT Hub:
- Maak een nieuwe IoT-hub met de preview-modus aan.
- Configureer uw client zodanig dat alleen ECDSA-coderingssuites worden opgenomen en eventuele RSA-suites worden uitgesloten . Dit zijn de ondersteunde coderingssuites voor de openbare preview van 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
- Verbinding maken uw client naar de preview-IoT-hub.
TLS 1.2-afdwinging beschikbaar in bepaalde regio's
Voor extra beveiliging configureert u uw IoT Hubs zodat alleen clientverbindingen met TLS-versie 1.2 zijn toegestaan en om het gebruik van coderingssuites af te dwingen. Deze functie wordt alleen ondersteund in deze regio's:
- VS - oost
- VS - zuid-centraal
- VS - west 2
- VS (overheid) - Arizona
- Ondersteuning voor US Gov Virginia (TLS 1.0/1.1-ondersteuning is niet beschikbaar in deze regio- TLS 1.2-afdwinging moet zijn ingeschakeld of het maken van IoT-hub mislukt)
Als u TLS 1.2-afdwinging wilt inschakelen, volgt u de stappen in IoT-hub maken in Azure Portal, met uitzondering van
Kies een regio uit een regio in de bovenstaande lijst.
Selecteer onder Beheer -> Geavanceerd -> Transport Layer Security (TLS) -> Minimale TLS-versie1.2. Deze instelling wordt alleen weergegeven voor IoT Hub die is gemaakt in de ondersteunde regio.
Als u een ARM-sjabloon wilt gebruiken voor het maken, richt u een nieuwe IoT Hub in een van de ondersteunde regio's in en stelt u de minTlsVersion
eigenschap 1.2
in op 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 die deze configuratie gebruikt, 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 het ClientHello
bericht geen van de aanbevolen coderingen vermeldt.
Notitie
De minTlsVersion
eigenschap heeft het kenmerk Alleen-lezen en kan niet worden gewijzigd zodra uw IoT Hub resource is gemaakt. Daarom is het essentieel dat u uw IoT-apparaten en -services goed test en valideert dat deze compatibel zijn met TLS 1.2 en de aanbevolen coderingen vooraf.
Na failovers blijft de minTlsVersion
eigenschap van uw IoT Hub effectief in de geografisch gekoppelde regio na failover.
Coderingssuites
IoT Hubs die zijn geconfigureerd om alleen TLS 1.2 te accepteren, dwingt ook het gebruik van de volgende aanbevolen coderingssuites af:
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
Voor IoT Hubs die niet zijn geconfigureerd voor AFdwinging van TLS 1.2, werkt TLS 1.2 nog steeds met de volgende coderingssuites:
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
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_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
Een client kan een lijst met hogere coderingssuites voorstellen die tijdens ClientHello
het gebruik moeten worden gebruikt. Sommige hiervan worden echter mogelijk niet ondersteund door IoT Hub (bijvoorbeeldECDHE-ECDSA-AES256-GCM-SHA384
). In dit geval zal IoT Hub proberen de voorkeur van de client te volgen, maar uiteindelijk onderhandelen over de coderingssuite met ServerHello
.
TLS-configuratie voor SDK en IoT Edge
Gebruik de onderstaande koppelingen om TLS 1.2 en toegestane coderingen te configureren in IoT Hub client-SDK's.
Taal | Versies die TLS 1.2 ondersteunen | Documentatie |
---|---|---|
C | Tag 2019-12-11 of hoger | Koppeling |
Python | Versie 2.0.0 of hoger | Koppeling |
C# | Versie 1.21.4 of hoger | Koppeling |
Java | Versie 1.19.0 of hoger | Koppeling |
Node.js | Versie 1.12.2 of hoger | Koppeling |
IoT Edge apparaten kunnen worden geconfigureerd voor het gebruik van TLS 1.2 tijdens de communicatie met IoT Hub. Gebruik hiervoor de IoT Edge documentatiepagina.
Apparaatverificatie
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 kan dit elk X.509-certificaat zijn, inclusief ECC. IoT Hub valideert het certificaat met de vingerafdruk of certificeringsinstantie (CA) die u opgeeft. Zie Ondersteunde X.509-certificaten voor meer informatie.
Tls maximale fragmentlengteonderhandeling (preview)
IoT Hub biedt ook ondersteuning voor de onderhandeling over maximale fragmentlengte van TLS, ook wel tls-framegrootteonderhandeling genoemd. Deze functie is beschikbaar voor openbare preview.
Gebruik deze functie om de maximale lengte van tekst zonder tekstfragment 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 het berekenen of geheugenbeperkingen van apparaten. 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
- Maak een nieuwe IoT-hub met de preview-modus aan.
- Wanneer u OpenSSL gebruikt, roept u SSL_CTX_set_tlsext_max_fragment_length aan om de fragmentgrootte op te geven.
- Verbinding maken uw client naar de preview-IoT Hub.
Volgende stappen
- Zie Toegang tot IoT Hub beheren voor meer informatie over IoT Hub beveiliging en toegangsbeheer.
- Zie Apparaatverificatie met X.509-CA-certificaten voor meer informatie over het gebruik van X509-certificaat voor apparaatverificatie