Freigeben über


Transport Layer Security (TLS)-Unterstützung in IoT Hub

IoT Hub verwendet Transport Layer Security (TLS) zum Sichern von Verbindungen mit IoT-Geräten und -Diensten.

Hinweis

Azure IoT Hub wird die Unterstützung für TLS 1.0 und 1.1 in Übereinstimmung mit der Azure-weiten Dienstankündigung der Deaktivierung von TLS 1.0 und 1.1 am 31. August 2025 beenden.

Daher ist es von entscheidender Bedeutung, dass Sie im Voraus ordnungsgemäß testen und überprüfen, ob alle Ihre IoT-Geräte und -Dienste mit TLS 1.2 und den empfohlenen Verschlüsselungen kompatibel sind. Es wird dringend empfohlen, das Mindest-TLS-Durchsetzungsfeature als Mechanismus für Tests und Compliance zu verwenden.

Die TLS-Version, die auf Ihren IoT Hub-Geräten ausgeführt wird, finden Sie unter Leitfaden zum Ende des Supports von TLS 1.0 und 1.1.

Gegenseitige TLS-Unterstützung

Die gegenseitige TLS-Authentifizierung stellt sicher, dass der Client das Server-(IoT Hub-)Zertifikat authentifiziert und der Server (IoT Hub) den Client per X.509-Clientzertifikat oder X.509-Fingerabdruck authentifiziert. Die Autorisierung wird von IoT Hub nach Abschluss der Authentifizierung durchgeführt.

Für das Advanced Message Queuing Protocol (AMQP) und das Message Queuing Telemetry Transport (MQTT)-Protokoll fordert IoT Hub zu Beginn ein Clientzertifikat im TLS-Handshake an. Wird eins bereitgestellt, authentifiziert IoT Hub das Clientzertifikat, und der Client authentifiziert das IoT Hub-Zertifikat. Dieser Prozess wird als gegenseitige TLS-Authentifizierung bezeichnet. Wenn IoT Hub ein MQTT-Verbindungspaket empfängt oder wenn ein AMQP-Link geöffnet wird, führt IoT Hub die Autorisierung für den anfordernden Client durch und ermittelt, ob der Client die X.509-Authentifizierung erfordert. Wenn die gegenseitige TLS-Authentifizierung abgeschlossen wurde und der Client zum Herstellen einer Verbindung als Gerät autorisiert ist, ist dies zulässig. Wenn der Client jedoch die X.509-Authentifizierung erfordert und die Clientauthentifizierung während des TLS-Handshakes nicht abgeschlossen wurde, lehnt IoT Hub die Verbindung ab.

Beim HTTP-Protokoll überprüft IoT Hub bei der ersten Anforderung des Clients, ob der Client die X.509-Authentifizierung erfordert und ob die Clientauthentifizierung abgeschlossen ist. Anschließend führt IoT Hub die Autorisierung durch. Wenn die Clientauthentifizierung nicht abgeschlossen wurde, lehnt IoT Hub die Verbindung ab.

Nach einem erfolgreichen TLS-Handshake kann IoT Hub ein Gerät mithilfe eines symmetrischen Schlüssels oder eines X.509-Zertifikats authentifizieren. Bei zertifikatbasierter Authentifizierung überprüft IoT Hub das Zertifikat mit dem Fingerabdruck oder der Zertifizierungsstelle (Certificate Authority, CA), den bzw. die Sie bereitstellen. Weitere Informationen finden Sie unter Unterstützte X.509-Zertifikate.

TLS-Zertifikat des IoT Hub-Servers

Während eines TLS-Handshakes präsentiert IoT Hub RSA-schlüsselgebundene Serverzertifikate zum Verbinden von Clients. Alle IoT-Hubs in der globalen Azure-Cloud verwenden das TLS-Zertifikat, das vom DigiCert Global Root G2 ausgestellt wird.

Es wird dringend empfohlen, dass alle Geräte den folgenden drei Stammzertifizierungsstellen vertrauen:

  • DigiCert Global G2
  • Microsoft RSA 2017

Links zum Herunterladen dieser Zertifikate finden Sie unter Details zur Azure-Zertifizierungsstelle.

Stammzertifizierungsstellenmigrationen sind selten. Sie sollten Ihre IoT-Lösung immer für das unwahrscheinliche Ereignis vorbereiten, dass eine Stammzertifizierungsstelle kompromittiert ist und eine Notfallmigration der Stammzertifizierungsstelle erforderlich ist.

Verschlüsselungssammlungen

Um die Azure-Sicherheitsrichtlinie für eine sichere Verbindung einzuhalten, unterstützt IoT Hub die folgenden RSA- und ECDSA-Verschlüsselungssammlungen für 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

Die folgenden Verschlüsselungssammlungen sind derzeit in IoT Hub zulässig. Diese Verschlüsselungssammlungen werden jedoch nicht mehr von den Azure-Sicherheitsrichtlinien empfohlen.

Verschlüsselungssammlungen TLS-Versionsunterstützung
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2
TLS_RSA_WITH_AES_256_GCM_SHA384 TLS 1.2
TLS_RSA_WITH_AES_128_GCM_SHA256 TLS 1.2
TLS_RSA_WITH_AES_256_CBC_SHA256 TLS 1.2
TLS_RSA_WITH_AES_128_CBC_SHA256 TLS 1.2
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS 1.0/1.1/1.2
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_3DES_EDE_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_AES_128_CBC_SHA TLS 1.0/1.1/1.2
TLS_RSA_WITH_AES_256_CBC_SHA TLS 1.0/1.1/1.2

Ein Client kann eine Liste von höheren Verschlüsselungssammlungen vorschlagen, die während ClientHello verwendet werden sollen. Einige davon werden jedoch möglicherweise nicht von IoT Hub unterstützt (z. B. ECDHE-ECDSA-AES256-GCM-SHA384). In diesem Fall versucht IoT Hub, die bevorzugte Einstellung des Clients einzuhalten, aber die Sammlung an Verschlüsselungsverfahren letztendlich mit ServerHello auszuhandeln.

Erzwingen der Verwendung von TLS 1.2 und starken Verschlüsselungssammlungen von IoT Hub

Um dafür zu sorgen, dass Ihre IoT-Geräte mit TLS 1.2 und starken Verschlüsselungssammlungen konform sind, können Sie die Compliance mithilfe der Mindest-TLS-Durchsetzungsfunktion in Azure IoT Hub erzwingen.

Derzeit ist dieses Feature nur in den folgenden Regionen und während der IoT Hub-Erstellung verfügbar (weitere Azure-Regionen werden im Jahr 2025 unterstützt):

  • East US
  • USA Süd Mitte
  • USA, Westen 2
  • US Gov Arizona
  • US Gov Virginia (Unterstützung für TLS 1.0/1.1 ist in dieser Region nicht verfügbar. TLS 1.2-Erzwingung muss aktiviert werden, sonst führt die Erstellung des IoT-Hubs zu einem Fehler)

So aktivieren Sie die Durchsetzung von TLS 1.2 und starken Verschlüsselungssammlungen im Azure-Portal:

  1. Starten mit dem IoT Hub-Erstellungsassistenten im Azure-Portal

  2. Wählen Sie eine Region in der in der obigen Liste aus.

  3. Wählen Sie unter Verwaltung > Erweitert > Transport Layer Security (TLS) > TLS-Mindestversion die Option 1.2 aus. Diese Einstellung wird nur bei IoT-Hubs angezeigt, die in einer unterstützten Region erstellt wurden.

    Screenshot der Aktivierung der TLS 1.2-Durchsetzung während der IoT-Hub-Erstellung.

  4. Klicken Sie auf Erstellen

  5. Verbinden Ihrer IoT-Geräte mit diesem IoT Hub

Stellen Sie für die Verwendung einer ARM-Vorlage für die Erstellung einen neuen IoT-Hub in einer der unterstützten Regionen bereit, und legen Sie die minTlsVersion-Eigenschaft in der Ressourcenspezifikation auf 1.2 fest:

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

Die erstellte IoT Hub-Ressource, die diese Konfiguration verwendet, lehnt Geräte- und Dienstclients ab, die versuchen, eine Verbindung mit den TLS-Versionen 1.0 und 1.1 herzustellen. Analog dazu wird der TLS-Handshake abgelehnt, wenn die ClientHello-Nachricht keines der empfohlenen Verschlüsselungsverfahren enthält.

Hinweis

Die Eigenschaft minTlsVersion ist schreibgeschützt und kann nach Erstellung Ihrer IoT Hub-Ressource nicht mehr geändert werden. Daher ist es von entscheidender Bedeutung, dass Sie im Voraus ordnungsgemäß testen und überprüfen, ob alle Ihre IoT-Geräte und -Dienste mit TLS 1.2 und den empfohlenen Verschlüsselungen kompatibel sind.

Nach einem Failover bleibt die Eigenschaft minTlsVersion Ihres IoT Hubs in der geografisch gekoppelten Region wirksam.

Nachsehen von TLS-Versionen für IoT Hub-Geräte

Azure IoT Hub kann Diagnoseprotokolle für mehrere Kategorien bereitstellen, die mithilfe von Azure Monitor-Protokollen analysiert werden können. Im Verbindungsprotokoll finden Sie die TLS-Version für Ihre IoT Hub-Geräte.

Führen Sie folgende Schritte aus, um diese Ressourcenprotokolle anzuzeigen:

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
  2. Wählen Sie im Menü der Ressource unter Überwachung die Option Diagnoseeinstellungen aus. Stellen Sie sicher, dass „Verbindungen“ in den Diagnoseeinstellungen mit einem Häkchen versehen ist.
  3. Wählen Sie im Ressourcenmenü unter Überwachung die Option Protokolle aus.
  4. Geben Sie die folgende Abfrage ein:
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
  1. Ein Beispiel für die Abfrageergebnisse sieht wie folgt aus: Diagramm, das die Abfrage über die TLS-Version des Geräts zeigt.
  2. Hinweis: TLS-Versionsabfrage ist für Geräte mit HTTPS-Verbindungen nicht verfügbar.

TLS-Konfiguration für SDK und IoT Edge

Verwenden Sie die nachstehenden Links zum Konfigurieren von TLS 1.2 und zulässigen Verschlüsselungsverfahren in IoT Hub-Client-SDKs.

Sprache Versionen mit Unterstützung von TLS 1.2 Dokumentation
C Tag 2019-12-11 oder höher Link
Python Version 2.0.0 oder höher Link
C# Version 1.21.4 oder höher Link
Java Version 1.19.0 oder höher Link
NodeJS Version 1.12.2 oder höher Link

IoT Edge-Geräte können für die Verwendung von TLS 1.2 bei der Kommunikation mit IoT Hub konfiguriert werden. Verwenden Sie dazu die IoT Edge Dokumentationsseite.

TLS-Zertifikat von ECC-Server (Elliptic Curve Cryptography)

Während die ECC-Zertifikatüberprüfung (mit Nur-ECC-Verschlüsselungssammlungen) eine ähnliche Sicherheit für RSA-Zertifikate bietet, nutzt sie bis zu 40 % weniger Compute, Arbeitsspeicher und Bandbreite. Diese Einsparungen sind wichtig für IoT-Geräte aufgrund ihrer kleineren Profile und des kleineren Arbeitsspeichers und zur Unterstützung von Anwendungsfällen in Umgebungen mit eingeschränkter Netzwerkbandbreite.

So können Sie das ECC-Serverzertifikat von IoT Hub verwenden:

  1. Stellen Sie sicher, dass alle Geräte den folgenden Stamm-CAs vertrauen:
    • DigiCert Global G2
    • Microsoft RSA 2017
  2. Konfigurieren Sie Ihren Client so, dass er nur ECDSA-Verschlüsselungssammlungen enthält und RSA-Verschlüsselungssammlungen ausschließt. Dies sind die unterstützten Verschlüsselungssammlungen für das ECC-Zertifikat:
    • 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. Verbinden Sie Ihren Client mit dem IoT Hub.

Aushandlung der maximalen TLS-Fragmentlänge

IoT Hub unterstützt auch die Aushandlung der maximalen TLS-Fragmentlänge, die manchmal als „Aushandlung der TLS-Framegröße“ bezeichnet wird. Dieses Feature befindet sich in der Phase der öffentlichen Vorschau.

Mithilfe dieses Features können Sie für die maximale Fragmentlänge des Klartexts einen Wert angeben, der kleiner als der Standardwert von „2^14 Bytes“ ist. Nach dem Aushandeln beginnen IoT Hub und der Client mit der Fragmentierung von Nachrichten, um sicherzustellen, dass alle Fragmente kleiner als die ausgehandelte Länge sind. Dieses Verhalten ist hilfreich für die Berechnung oder den Speicher eingeschränkter Geräte. Weitere Informationen finden Sie in der offiziellen TLS-Erweiterungsspezifikation.

Die offizielle SDK-Unterstützung für dieses Feature der öffentlichen Vorschau steht noch nicht zur Verfügung. Einführung

  1. Erstellen Sie einen IoT Hub.
  2. Wenn Sie OpenSSL verwenden, rufen Sie SSL_CTX_set_tlsext_max_fragment_length auf, um die Fragmentgröße anzugeben.
  3. Verbinden Sie Ihren Client mit dem IoT Hub.

Anheften von Zertifikaten

Vom Anheften von Zertifikaten sowie vom Filtern der TLS-Serverzertifikate und Zwischenzertifikate, die mit IoT Hub-Endpunkten verknüpft sind, wird dringend abgeraten, da Microsoft diese Zertifikate ohne oder mit nur geringer Vorankündigung ändert. Falls erforderlich, heften Sie nur die Stammzertifikate wie in diesem Azure IoT-Blogbeitrag beschrieben an.

Nächste Schritte