Obsługa protokołu TLS w usłudze Azure IoT Hub Device Provisioning Service (DPS)

Usługa DPS używa protokołu Transport Layer Security (TLS) do zabezpieczania połączeń z urządzeń IoT.

Bieżące wersje protokołu TLS obsługiwane przez usługę DPS to:

  • TLS 1.2

Ograniczanie połączeń do minimalnej wersji protokołu TLS

Wystąpienia usługi DPS można skonfigurować tak, aby zezwalały tylko na połączenia klienckie urządzeń używające minimalnej wersji protokołu TLS lub nowszej.

Ważne

Obecnie usługa DPS obsługuje tylko protokół TLS 1.2, więc nie ma potrzeby określania minimalnej wersji protokołu TLS podczas tworzenia wystąpienia usługi DPS. Ta funkcja jest udostępniana na potrzeby przyszłego rozszerzenia.

W tym celu należy aprowizować nowy zasób usługi DPS ustawiając minTlsVersion właściwość na 1.2 wartość w specyfikacji zasobów usługi DPS szablonu usługi Azure Resource Manager. Poniższy przykładowy kod JSON szablonu określa minTlsVersion właściwość dla 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 usługi Resource Manager, zobacz Konfigurowanie usługi DPS przy użyciu szablonu usługi Azure Resource Manager.

Zasób usługi DPS utworzony przy użyciu tej konfiguracji odmówi urządzeń, które próbują nawiązać połączenie przy użyciu protokołu TLS w wersji 1.0 i 1.1.

Uwaga

Właściwość minTlsVersion jest tylko do odczytu i nie można jej zmienić po utworzeniu zasobu usługi DPS. Dlatego ważne jest, aby prawidłowo przetestować i zweryfikować, czy wszystkie urządzenia IoT są zgodne z protokołem TLS 1.2 i zalecanymi szyframi z wyprzedzeniem.

Uwaga

Po przejściu minTlsVersion w tryb failover właściwość usługi DPS pozostanie skuteczna w sparowanym geograficznie regionie po przejściu w tryb failover.

Wystąpienia usługi DPS wymuszają użycie następujących zalecanych i starszych zestawów szyfrowania:

Zalecane zestawy 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 zestawy szyfrowania

Te zestawy szyfrowania są obecnie nadal obsługiwane przez usługę DPS, ale zostaną wycofane. Jeśli to możliwe, użyj zalecanych zestawów szyfrowania.

Opcja 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)
Opcja 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)

Obsługa wzajemnego protokołu TLS

Gdy rejestracje usługi DPS są skonfigurowane do uwierzytelniania X.509, wzajemne protokoły TLS (mTLS) są obsługiwane przez usługę DPS.

Przypinanie certyfikatu

Przypinanie certyfikatów i filtrowanie certyfikatów serwera TLS (czyli certyfikatów liści) i certyfikatów pośrednich skojarzonych z punktami końcowymi usługi DPS jest zdecydowanie odradzane, ponieważ firma Microsoft często przerzuca te certyfikaty z niewielkim wyprzedzeniem lub bez powiadomienia. Jeśli musisz, przypnij tylko certyfikaty główne zgodnie z opisem w tym wpisie w blogu usługi Azure IoT.

Używanie protokołu TLS 1.2 w zestawach SDK IoT

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

Język Wersje obsługujące protokół TLS 1.2 Dokumentacja
C Tag 2019-12-11 lub nowszy Łącze
Python Wersja 2.0.0 lub nowsza Łącze
C# Wersja 1.21.4 lub nowsza Łącze
Java Wersja 1.19.0 lub nowsza Łącze
NodeJS Wersja 1.12.2 lub nowsza Łącze

Używanie protokołu TLS 1.2 z usługą IoT Hub

Usługę IoT Hub można skonfigurować do używania protokołu TLS 1.2 podczas komunikowania się z urządzeniami. Aby uzyskać więcej informacji, zobacz Przestarzałe protokoły TLS 1.0 i 1.1 dla usługi IoT Hub.

Używanie protokołu TLS 1.2 z usługą IoT Edge

Urządzenia usługi IoT Edge można skonfigurować do używania protokołu TLS 1.2 podczas komunikacji z usługami IoT Hub i DPS. Aby uzyskać więcej informacji, zobacz stronę dokumentacji usługi IoT Edge.