Udostępnij za pośrednictwem


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:

  1. Obserwowanie kreatora tworzenia usługi IoT Hub w witrynie Azure Portal

  2. Wybierz region z jednej na powyższej liście.

  3. 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.

    Zrzut ekranu przedstawiający sposób włączania wymuszania protokołu TLS 1.2 podczas tworzenia centrum IoT.

  4. Kliknij pozycję Utwórz

  5. Łą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:

  1. W witrynie Azure Portal przejdź do centrum IoT Hub.
  2. W menu zasobów w obszarze Monitorowanie wybierz pozycję Ustawienia diagnostyczne. Upewnij się, że ustawienia diagnostyczne mają znacznik wyboru "Połączenia".
  3. W menu zasobów w obszarze Monitorowanie wybierz pozycję Dzienniki.
  4. 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
  1. Przykład wyników zapytania wygląda następująco: Diagram przedstawiający zapytanie dotyczące wersji protokołu TLS urządzenia.
  2. 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:

  1. 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
  2. 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
  3. 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ę

  1. Tworzenie centrum IoT Hub.
  2. W przypadku korzystania z biblioteki OpenSSL wywołaj SSL_CTX_set_tlsext_max_fragment_length , aby określić rozmiar fragmentu.
  3. 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