Obsługa TLS w Azure IoT Hub Device Provisioning Service (DPS)

Usługi DPS Transport Layer Security (TLS) do zabezpieczania połączeń z urządzeń IoT.

Bieżące wersje protokołu TLS obsługiwane przez serwer DPS to:

  • TLS 1.2

Ograniczanie połączeń z TLS 1.2

Aby zapewnić dodatkowe zabezpieczenia, zaleca się skonfigurowanie wystąpień usługi DPS w taki sposób, aby zezwalały tylko na połączenia klienckie urządzeń, które używają zabezpieczeń TLS w wersji 1.2, i wymuszały użycie zalecanych szyfrów.

W tym celu należy aprowizować nowy zasób usługi DPS ustawiając właściwość na w Azure Resource Manager specyfikacji zasobu minTlsVersion 1.2 DPS szablonu usługi DPS. Poniższy przykładowy kod JSON szablonu minTlsVersion określa właściwość nowego wystąpienia usługi DPS.

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

Szablon można wdrożyć za pomocą następującego polecenia interfejsu wiersza polecenia platformy Azure.

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

Aby uzyskać więcej informacji na temat tworzenia zasobów usługi DPS przy użyciu szablonów Resource Manager, zobacz Konfigurowanie usługi DPS przy użyciu Azure Resource Manager szablonu.

Zasób usługi DPS utworzony przy użyciu tej konfiguracji odrzuca urządzenia próbujące nawiązać połączenie przy użyciu zabezpieczeń TLS w wersjach 1.0 i 1.1. Podobnie odmowa uściślinia TLS zostanie odrzucona, jeśli komunikat HELLO klienta urządzenia nie zawiera żadnego z zalecanych szyfrów.

Uwaga

Właściwość minTlsVersion jest tylko do odczytu i nie można jej zmienić po utworzeniu zasobu DPS. Dlatego ważne jest prawidłowe przetestowanie i zweryfikowanie, czy wszystkie urządzenia IoT są z wyprzedzeniem zgodne z szyfrowaniem TLS 1.2 i zalecanymi szyframi.

Uwaga

Po zakończeniu pracy w trybie failover właściwość dps pozostanie skuteczna w regionie sparowanych minTlsVersion geograficznie po zakończeniu pracy w trybie failover.

Wystąpienia usługi DPS skonfigurowane do akceptowania tylko TLS 1.2 będą również wymuszać użycie następujących mechanizmów szyfrowania:

Zalecane pakiety szyfrowania TLS 1.2
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

Starsze pakiety szyfrowania

Te pakiety szyfrowania są obecnie nadal obsługiwane przez dps, ale zostaną zdemortyzowane. Jeśli to możliwe, użyj zalecanych powyżej mechanizmów szyfrowania.

Opcje #1 (lepsze zabezpieczenia)
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)
Opcje #2 (lepsza wydajność)
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)

Używanie TLS 1.2 w zestawach SDK IoT

Użyj poniższych linków, aby skonfigurować szyfrowanie TLS 1.2 i dozwolone szyfry w zestawach SDK klienta usługi Azure IoT.

Język Wersje z obsługą TLS 1.2 Dokumentacja
C Tag 2019-12-11 lub nowszego Link
Python Wersja 2.0.0 lub nowsza Link
C# Wersja 1.21.4 lub nowsza Link
Java Wersja 1.19.0 lub nowsza Link
NodeJS Wersja 1.12.2 lub nowsza Link

Używanie TLS 1.2 z IoT Hub

IoT Hub można skonfigurować do korzystania z TLS 1.2 podczas komunikacji z urządzeniami. Aby uzyskać więcej informacji, zobacz Przestarzałe opcje TLS 1.0 i 1.1dla IoT Hub .

Używanie TLS 1.2 z IoT Edge

IoT Edge można skonfigurować do korzystania z TLS 1.2 podczas komunikacji z usługami IoT Hub i DPS. Aby uzyskać więcej informacji, zobacz stronę IoT Edge dokumentacji.