TLS-Unterstützung in Azure IoT Hub Device Provisioning Service (DPS)

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

Diese aktuellen TLS-Protokollversionen werden von DPS unterstützt:

  • TLS 1.2

Beschränken von Verbindungen auf TLS 1.2

Zur weiteren Sicherheit sollten Sie Ihre DPS-Instanzen so konfigurieren, dass nur Geräteclientverbindungen zugelassen werden, die TLS-Version 1.2 verwenden, und Sie sollten die Verwendung von empfohlenen Verschlüsselungen erzwingen.

Legen Sie dazu eine neue DPS-Ressourceneinstellung der minTlsVersion-Eigenschaft für 1.2 in der DPS-Ressourcenspezifikation Ihrer Azure Resource Manager-Vorlage fest. Im folgenden Beispiel einer JSON-Vorlage wird die Eigenschaft minTlsVersion für eine neue DPS-Instanz angegeben.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/ProvisioningServices",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-DPS-resource-name>",
            "location": "<any-region>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "S1",
                "capacity": 1
            },
        }     
    ]
}

Sie können die Vorlage mit dem folgenden Azure CLI-Befehl bereitstellen.

az deployment group create -g <your resource group name> --template-file template.json

Weitere Informationen zum Erstellen von DPS-Ressourcen mit Resource Manager-Vorlagen finden Sie unter Einrichten von DPS mit einer Azure Resource Manager-Vorlage.

Die mit dieser Konfiguration erstellte DPS-Ressource lehnt Geräte ab, die versuchen, mithilfe der TLS-Versionen 1.0 und 1.1 eine Verbindung herzustellen. Analog dazu wird der TLS-Handshake abgelehnt, wenn die HELLO-Nachricht des Geräteclients keine der empfohlenen Verschlüsselungen enthält.

Hinweis

Die Eigenschaft minTlsVersion ist schreibgeschützt und kann nach Erstellung Ihrer DPS-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 mit TLS 1.2 und den empfohlenen Verschlüsselungen kompatibel sind.

Hinweis

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

DPS-Instanzen, die so konfiguriert sind, dass nur TLS 1.2 akzeptiert wird, erzwingen außerdem die Verwendung der folgenden Verschlüsselungssammlung:

Empfohlene TLS 1.2-Verschlüsselungssammlungen
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

Legacy-Verschlüsselungssammlungen

Diese Verschlüsselungssammlungen werden derzeit weiterhin von DPS unterstützt, werden jedoch als veraltet markiert. Verwenden Sie nach Möglichkeit die oben genannten empfohlenen Verschlüsselungssammlungen.

Option 1 (höhere Sicherheit)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)
TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
Option 2 (höhere Leistung)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)
TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)

Verwenden von TLS 1.2 in den IoT-SDKs

Verwenden Sie die nachstehenden Links zum Konfigurieren von TLS 1.2 und zulässigen Verschlüsselungen in den Azure IoT-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

Verwenden von TLS 1.2 mit IoT Hub

IoT Hub kann für die Verwendung von TLS 1.2 bei der Kommunikation mit Geräten konfiguriert werden. Weitere Informationen finden Sie unter Deprecating TLS 1.0 and 1.1 for IoT Hub (Einstellung von TLS 1.0 and 1.1 für IoT Hub).

Verwenden von TLS 1.2 bei IoT Edge

IoT Edge-Geräte können für die Verwendung von TLS 1.2 bei der Kommunikation mit IoT Hub und DPS konfiguriert werden. Weitere Informationen finden Sie auf der Dokumentationsseite zu IoT Edge.