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.
Zalecane szyfry
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.