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 odrzuca urządzenia, 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ą 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.
Certyfikat TLS serwera
Podczas uzgadniania protokołu TLS usługa DPS prezentuje certyfikaty serwera z kluczem RSA do łączenia klientów. Wszystkie wystąpienia usługi DPS w globalnej chmurze platformy Azure używają certyfikatu TLS wystawionego przez globalny certyfikat G2 firmy DigiCert.
Zalecamy również dodanie certyfikatów głównego urzędu certyfikacji RSA 2017 firmy Microsoft do urządzeń, aby zapobiec zakłóceniom w przypadku nieoczekiwanego wycofania globalnego katalogu głównego G2 firmy DigiCert. Chociaż migracje głównego urzędu certyfikacji są rzadkie, aby zapewnić odporność w nowoczesnym środowisku zabezpieczeń, należy przygotować scenariusz IoT pod kątem mało prawdopodobnego zdarzenia, że główny urząd certyfikacji jest naruszony lub konieczne jest awaryjne migracji głównego urzędu certyfikacji.
Zdecydowanie zalecamy, aby wszystkie urządzenia ufały następującym głównym urzędom certyfikacji:
- Globalny urząd certyfikacji G2 firmy DigiCert
- Główny urząd certyfikacji RSA firmy Microsoft 2017
Aby uzyskać linki do pobierania tych certyfikatów, zobacz Szczegóły urzędu certyfikacji platformy Azure.
Zaufanie do certyfikatów w zestawach SDK
Zestawy SDK urządzeń Azure IoT łączą się i uwierzytelniają urządzenia z usługami Azure IoT. Różne zestawy SDK zarządzają certyfikatami na różne sposoby w zależności od języka i wersji, ale większość polega na zaufanym magazynie certyfikatów urządzenia, a nie przypinaniu certyfikatów bezpośrednio w bazie kodu. Takie podejście zapewnia elastyczność i odporność na obsługę przyszłych zmian w certyfikatach głównych.
Poniższa tabela zawiera podsumowanie wersji zestawu SDK obsługujących zaufany magazyn certyfikatów:
Zestaw SDK urządzenia usługi Azure IoT | Obsługiwane wersje |
---|---|
C | Wszystkie obecnie obsługiwane wersje |
C# | Wszystkie obecnie obsługiwane wersje |
Java | Wersja 2.x.x i nowsze |
Node.js | Wszystkie obecnie obsługiwane wersje |
Python | Wszystkie obecnie obsługiwane wersje |
Przypinanie certyfikatu
Przypinanie certyfikatów i filtrowanie certyfikatów serwera TLS (znanych również jako certyfikaty liści) i certyfikatów pośrednich skojarzonych z punktami końcowymi usługi DPS jest odradzane, ponieważ firma Microsoft często wprowadza te certyfikaty z niewielkim wyprzedzeniem lub bez powiadomienia. Jeśli musisz, przypnij tylko certyfikaty główne.
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 | 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 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 Wymuszanie protokołu TLS w usłudze 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.