Obsługa protokołu Transport Layer Security (TLS) w usłudze IoT Hub
Usługa IoT Hub używa protokołu Transport Layer Security (TLS) do zabezpieczania połączeń z urządzeń i usług IoT.
Uwaga
Usługa Azure IoT Hub zakończy obsługę protokołów TLS 1.0 i 1.1 zgodnie z ogłoszeniem dotyczącym szerokiej usługi platformy Azure dla protokołu TLS 1.0 i 1.1 w dniu 31 sierpnia 2025 r.
Dlatego ważne jest, aby prawidłowo przetestować i zweryfikować, czy wszystkie urządzenia i usługi IoT są zgodne z protokołem TLS 1.2 i zalecanymi szyframi z wyprzedzeniem. Zdecydowanie zaleca się używanie minimalnej funkcji wymuszania protokołu TLS jako mechanizmu testowania i zgodności
Aby dowiedzieć się, czy wersja protokołu TLS jest uruchomiona na urządzeniach usługi IoT Hub, zapoznaj się z przewodnikiem obsługi protokołu TLS 1.0 i 1.1.
Obsługa wzajemnego protokołu TLS
Wzajemne uwierzytelnianie TLS gwarantuje, że klient uwierzytelnia certyfikat serwera (IoT Hub), a serwer (IoT Hub) uwierzytelnia klienta przy użyciu certyfikatu klienta X.509 lub odcisku palca X.509. Usługa IoT Hub wykonuje autoryzację po zakończeniu uwierzytelniania.
W przypadku protokołów Advanced Message Queuing Protocol (AMQP) i Message Queuing Telemetry Transport (MQTT) usługa IoT Hub żąda certyfikatu klienta w początkowym uzgadnianiu protokołu TLS. Jeśli zostanie podany, usługa IoT Hub uwierzytelnia certyfikat klienta, a klient uwierzytelnia certyfikat usługi IoT Hub. Ten proces jest nazywany wzajemnym uwierzytelnianiem TLS. Gdy usługa IoT Hub odbiera pakiet połączenia MQTT lub zostanie otwarty link AMQP, usługa IoT Hub wykonuje autoryzację dla klienta żądającego i określa, czy klient wymaga uwierzytelniania X.509. Jeśli wzajemne uwierzytelnianie TLS zostało ukończone, a klient ma autoryzację do nawiązywania połączenia jako urządzenia, jest to dozwolone. Jeśli jednak klient wymaga uwierzytelniania X.509, a uwierzytelnianie klienta nie zostało ukończone podczas uzgadniania protokołu TLS, usługa IoT Hub odrzuca połączenie.
W przypadku protokołu HTTP, gdy klient wysyła pierwsze żądanie, usługa IoT Hub sprawdza, czy klient wymaga uwierzytelniania X.509, a jeśli uwierzytelnianie klienta zostało ukończone, usługa IoT Hub wykonuje autoryzację. Jeśli uwierzytelnianie klienta nie zostało ukończone, usługa IoT Hub odrzuca połączenie
Po pomyślnym uzgadnianiu protokołu TLS usługa IoT Hub może uwierzytelniać urządzenie przy użyciu klucza symetrycznego lub certyfikatu X.509. W przypadku uwierzytelniania opartego na certyfikatach usługa IoT Hub weryfikuje certyfikat względem podanego odcisku palca lub urzędu certyfikacji. Aby dowiedzieć się więcej, zobacz Obsługiwane certyfikaty X.509.
Certyfikat TLS serwera usługi IoT Hub
Podczas uzgadniania protokołu TLS usługa IoT Hub prezentuje certyfikaty serwera z kluczem RSA do łączenia klientów. Wszystkie centra IoT w globalnej chmurze platformy Azure używają certyfikatu TLS wystawionego przez globalny katalog główny G2 firmy DigiCert.
Zdecydowanie zalecamy, aby wszystkie urządzenia ufały następującym trzem 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.
Migracje głównego urzędu certyfikacji są rzadkie. Zawsze należy przygotować rozwiązanie IoT pod kątem mało prawdopodobnego zdarzenia naruszenia zabezpieczeń głównego urzędu certyfikacji, a migracja awaryjnego głównego urzędu certyfikacji jest niezbędna.
Zestawy szyfrowania
Aby zapewnić zgodność z zasadami zabezpieczeń platformy Azure na potrzeby bezpiecznego połączenia, usługa IoT Hub obsługuje następujące zestawy szyfrowania RSA i ECDSA dla protokołu TLS 1.2:
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
Następujące zestawy szyfrowania są obecnie dozwolone w usłudze IoT Hub. Jednak te zestawy szyfrowania nie są już zalecane przez wytyczne dotyczące zabezpieczeń platformy Azure.
Zestawy szyfrowania | Obsługa wersji protokołu TLS |
---|---|
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_GCM_SHA384 | TLS 1.2 |
TLS_RSA_WITH_AES_128_GCM_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA256 | TLS 1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA256 | TLS 1.2 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_AES_128_CBC_SHA | TLS 1.0/1.1/1.2 |
TLS_RSA_WITH_AES_256_CBC_SHA | TLS 1.0/1.1/1.2 |
Klient może zasugerować listę wyższych zestawów szyfrowania do użycia podczas .ClientHello
Jednak niektóre z nich mogą nie być obsługiwane przez usługę IoT Hub (na przykład ECDHE-ECDSA-AES256-GCM-SHA384
). W takim przypadku usługa IoT Hub próbuje postępować zgodnie z preferencjami klienta, ale ostatecznie negocjuje pakiet szyfrowania za pomocą polecenia ServerHello
.
Wymuszanie używania protokołu TLS 1.2 i silnych zestawów szyfrowania usługi IoT Hub
Aby zapewnić zgodność urządzeń IoT z protokołem TLS 1.2 i silnymi zestawami szyfrowania, można wymusić zgodność przy użyciu minimalnej funkcji wymuszania protokołu TLS w usłudze Azure IoT Hub.
Obecnie ta funkcja jest dostępna tylko w następujących regionach i podczas tworzenia usługi IoT Hub (inne regiony platformy Azure będą obsługiwane w 2025 r.):
- Wschodnie stany USA
- South Central US
- Zachodnie stany USA 2
- US Gov Arizona
- US Gov Virginia (obsługa protokołu TLS 1.0/1.1 nie jest dostępna w tym regionie — wymuszanie protokołu TLS 1.2 musi być włączone lub tworzenie centrum IoT kończy się niepowodzeniem)
Aby włączyć wymuszanie protokołów TLS 1.2 i silnych zestawów szyfrowania w witrynie Azure Portal:
Obserwowanie kreatora tworzenia usługi IoT Hub w witrynie Azure Portal
Wybierz region z jednej na powyższej liście.
W obszarze Zarządzanie —> zaawansowane —> Transport Layer Security (TLS) —> minimalna wersja protokołu TLS wybierz pozycję 1.2. To ustawienie jest wyświetlane tylko dla centrum IoT utworzonego w obsługiwanym regionie.
Kliknij pozycję Utwórz
Łączenie urządzeń IoT z tą usługą IoT Hub
Aby użyć szablonu usługi ARM do utworzenia, aprowizuj nowe centrum IoT Hub w dowolnym z obsługiwanych regionów i ustaw minTlsVersion
właściwość na wartość 1.2
w specyfikacji zasobu:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Devices/IotHubs",
"apiVersion": "2020-01-01",
"name": "<provide-a-valid-resource-name>",
"location": "<any-of-supported-regions-below>",
"properties": {
"minTlsVersion": "1.2"
},
"sku": {
"name": "<your-hubs-SKU-name>",
"tier": "<your-hubs-SKU-tier>",
"capacity": 1
}
}
]
}
Utworzony zasób usługi IoT Hub przy użyciu tej konfiguracji odrzuca klientów urządzeń i usług, którzy próbują nawiązać połączenie przy użyciu protokołu TLS w wersji 1.0 i 1.1. Podobnie uzgadnianie protokołu TLS jest odrzucane, jeśli ClientHello
komunikat nie wyświetla żadnej z zalecanych szyfrów.
Uwaga
Właściwość minTlsVersion
jest tylko do odczytu i nie można jej zmienić po utworzeniu zasobu usługi IoT Hub. Dlatego ważne jest, aby prawidłowo przetestować i zweryfikować, czy wszystkie urządzenia i usługi IoT są zgodne z protokołem TLS 1.2 i zalecanymi szyframi z wyprzedzeniem.
Po przejściu minTlsVersion
w tryb failover właściwość usługi IoT Hub pozostaje skuteczna w sparowanym geograficznie regionie po przejściu w tryb failover.
Sprawdzanie wersji protokołu TLS dla urządzeń usługi IoT Hub
Usługa Azure IoT Hub może udostępniać dzienniki diagnostyczne dla kilku kategorii, które można analizować przy użyciu dzienników usługi Azure Monitor. W dzienniku połączeń można znaleźć wersję protokołu TLS dla urządzeń usługi IoT Hub.
Aby wyświetlić te dzienniki, wykonaj następujące kroki:
- W witrynie Azure Portal przejdź do centrum IoT Hub.
- W menu zasobów w obszarze Monitorowanie wybierz pozycję Ustawienia diagnostyczne. Upewnij się, że ustawienia diagnostyczne mają znacznik wyboru "Połączenia".
- W menu zasobów w obszarze Monitorowanie wybierz pozycję Dzienniki.
- Wprowadź następujące zapytanie:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| where OperationName == "deviceConnect"
| extend props_json = parse_json(properties_s)
| project DeviceId = props_json.deviceId, TLSVersion = props_json.tlsVersion
- Przykład wyników zapytania wygląda następująco:
- Uwaga: zapytanie o wersję protokołu TLS nie jest dostępne dla urządzeń korzystających z połączeń HTTPS.
Konfiguracja protokołu TLS dla zestawu SDK i usługi IoT Edge
Skorzystaj z poniższych linków, aby skonfigurować protokół TLS 1.2 i dozwolone szyfry w zestawach SDK klienta usługi IoT Hub.
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 |
Urządzenia usługi IoT Edge można skonfigurować do używania protokołu TLS 1.2 podczas komunikacji z usługą IoT Hub. W tym celu użyj strony dokumentacji usługi IoT Edge.
Certyfikat TLS serwera Elliptic Curve Cryptography (ECC)
Oferując podobne zabezpieczenia do certyfikatów RSA, weryfikacja certyfikatu ECC (z zestawami szyfrów tylko ecC) wykorzystuje do 40% mniej mocy obliczeniowej, pamięci i przepustowości. Te oszczędności są ważne w przypadku urządzeń IoT ze względu na ich mniejsze profile i pamięć oraz obsługę przypadków użycia w środowiskach ograniczonych przepustowości sieci.
Aby użyć certyfikatu serwera ECC usługi IoT Hub:
- Upewnij się, że wszystkie urządzenia ufają następującym głównym urzędom certyfikacji:
- Globalny urząd certyfikacji G2 firmy DigiCert
- Główny urząd certyfikacji RSA firmy Microsoft 2017
- Skonfiguruj klienta tak, aby zawierał tylko pakiety szyfrowania ECDSA i wykluczyć wszystkie te. Są to obsługiwane zestawy szyfrowania dla certyfikatu ECC:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- Połącz klienta z centrum IoT Hub.
Negocjowanie maksymalnej długości fragmentu protokołu TLS
Usługa IoT Hub obsługuje również negocjowanie maksymalnej długości fragmentu protokołu TLS, co jest czasami nazywane negocjowaniem rozmiaru ramki PROTOKOŁU TLS. Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Ta funkcja umożliwia określenie maksymalnej długości fragmentu zwykłego tekstu do wartości mniejszej niż domyślna 2^14 bajtów. Po wynegocjowaniu usługa IoT Hub i klient zaczynają fragmentować komunikaty, aby upewnić się, że wszystkie fragmenty są mniejsze niż długość wynegocjowanej. To zachowanie jest przydatne w przypadku urządzeń z ograniczonymi obliczeniami lub pamięcią. Aby dowiedzieć się więcej, zobacz oficjalną specyfikację rozszerzenia TLS.
Oficjalna obsługa zestawu SDK dla tej funkcji publicznej wersji zapoznawczej nie jest jeszcze dostępna. Aby rozpocząć pracę
- Tworzenie centrum IoT Hub.
- W przypadku korzystania z biblioteki OpenSSL wywołaj SSL_CTX_set_tlsext_max_fragment_length , aby określić rozmiar fragmentu.
- Połącz klienta z usługą IoT Hub.
Przypinanie certyfikatu
Przypinanie i filtrowanie certyfikatów serwera TLS i certyfikatów pośrednich skojarzonych z punktami końcowymi usługi IoT Hub jest zdecydowanie odradzane, ponieważ firma Microsoft często wdraża 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.
Następne kroki
- Aby dowiedzieć się więcej na temat zabezpieczeń i kontroli dostępu w usłudze IoT Hub, zobacz Kontrola dostępu do usługi IoT Hub.
- Aby dowiedzieć się więcej na temat używania certyfikatu X509 do uwierzytelniania urządzeń, zobacz Uwierzytelnianie urządzenia przy użyciu certyfikatów X.509 urzędu certyfikacji