Sdílet prostřednictvím


Podpora protokolu TLS (Transport Layer Security) ve službě IoT Hub

IoT Hub používá k zabezpečení připojení ze zařízení a služeb IoT protokol TLS (Transport Layer Security).

Poznámka:

Azure IoT Hub ukončí podporu protokolu TLS 1.0 a 1.1 v souladu s oznámením o celé službě Azure pro vyřazení protokolu TLS 1.0 a 1.1 31. srpna 2025.

Proto je nezbytné správně otestovat a ověřit, že všechna vaše zařízení a služby IoT jsou kompatibilní s protokolem TLS 1.2 a doporučenými šifrováními předem. Důrazně doporučujeme použít minimální funkci vynucení protokolu TLS jako mechanismus pro testování a dodržování předpisů.

Pokud chcete zjistit verzi protokolu TLS, na kterých jsou vaše zařízení IoT Hub spuštěná, projděte si průvodce ukončením podpory tls 1.0 a 1.1.

Vzájemná podpora protokolu TLS

Vzájemné ověřování TLS zajišťuje, že klient ověřuje certifikát serveru (IoT Hub) a server (IoT Hub) ověřuje klienta pomocí klientského certifikátu X.509 nebo kryptografického otisku X.509. IoT Hub provádí autorizaci po dokončení ověřování .

V případě protokolů AMQP (Advanced Message Queuing Protocol) a MQTT (Message Queuing Telemetry Transport) služba IoT Hub vyžádá klientský certifikát v počátečním protokolu TLS handshake. Pokud je k dispozici, Služba IoT Hub ověří klientský certifikát a klient ověří certifikát služby IoT Hub. Tento proces se nazývá vzájemné ověřování TLS. Když IoT Hub obdrží paket připojení MQTT nebo se otevře propojení AMQP, Služba IoT Hub provede autorizaci pro žádajícího klienta a určí, jestli klient vyžaduje ověření X.509. Pokud bylo dokončeno vzájemné ověřování TLS a klient má oprávnění připojit se jako zařízení, je povoleno. Pokud ale klient vyžaduje ověřování X.509 a během metody handshake protokolu TLS se ověření klienta nedokončilo, Služba IoT Hub připojení odmítne.

Když klient provede první požadavek protokolu HTTP, Služba IoT Hub zkontroluje, jestli klient vyžaduje ověřování X.509, a pokud bylo ověření klienta dokončeno, služba IoT Hub provede autorizaci. Pokud se ověření klienta nedokončí, IoT Hub připojení odmítne.

Po úspěšném handshake protokolu TLS může IoT Hub ověřit zařízení pomocí symetrického klíče nebo certifikátu X.509. Pro ověřování na základě certifikátu služba IoT Hub ověří certifikát proti kryptografickému otisku nebo certifikační autoritě, kterou zadáte. Další informace najdete v tématu Podporované certifikáty X.509.

Certifikát TLS serveru služby IoT Hub

Během metody handshake protokolu TLS ioT Hub prezentuje certifikáty serveru s klíči RSA pro připojení klientů. Všechna centra IoT v globálním cloudu Azure používají certifikát TLS vydaný globálním kořenovým adresářem DigiCert G2.

Důrazně doporučujeme, aby všechna zařízení důvěřovala následujícím třem kořenovým certifikačním autoritám:

  • Globální certifikační autorita DigiCert G2
  • Kořenová certifikační autorita Microsoft RSA 2017

Odkazy na stažení těchto certifikátů najdete v podrobnostech certifikační autority Azure.

Migrace kořenové certifikační autority jsou vzácné. Řešení IoT byste měli vždy připravit na nepravděpodobnou událost, že dojde k ohrožení kořenové certifikační autority a je nutná migrace kořenové certifikační autority pro tísňové volání.

Šifrovací sady

Aby služba IoT Hub splňovala zásady zabezpečení Azure pro zabezpečené připojení, podporuje následující šifrovací sady RSA a ECDSA pro protokol 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

V IoT Hubu jsou aktuálně povolené následující šifrovací sady. Tyto šifrovací sady už ale nedoporučují pokyny pro zabezpečení Azure.

Šifrovací sady Podpora verzí protokolu 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 může navrhnout seznam vyšších šifrovacích sad, které se mají použít během ClientHello. Některé z nich ale nemusí ioT Hub podporovat (například ECDHE-ECDSA-AES256-GCM-SHA384). V tomto případě se IoT Hub pokusí sledovat preferenci klienta, ale nakonec vyjednat šifrovací sadu s ServerHello.

Vynucení ioT Hubu pro použití tls 1.2 a silných šifrovacích sad

Pokud chcete zajistit, aby vaše zařízení IoT používala protokol TLS 1.2 a dodržování předpisů se silnými šifrovacími sadami , můžete dodržování předpisů vynutit pomocí minimální funkce vynucení protokolu TLS ve službě Azure IoT Hub.

V současné době je tato funkce dostupná pouze v následujících oblastech a během vytváření služby IoT Hub (v roce 2025 se budou podporovat další oblasti Azure):

  • USA – východ
  • Středojižní USA
  • Západní USA 2
  • US Gov – Arizona
  • US Gov Virginia (podpora protokolu TLS 1.0/1.1 není v této oblasti dostupná – vynucení protokolu TLS 1.2 musí být povolené nebo vytvoření centra IoT selže)

Povolení vynucení tls 1.2 a silných šifrovacích sad na webu Azure Portal:

  1. Zídání pomocí průvodce vytvořením služby IoT Hub na webu Azure Portal

  2. V seznamu výše vyberte oblast.

  3. V části Správa –> Advanced –> Tls (Transport Layer Security) –> Minimální verze protokolu TLS vyberte 1.2. Toto nastavení se zobrazí jenom pro centrum IoT vytvořené v podporované oblasti.

    Snímek obrazovky znázorňující, jak zapnout vynucení protokolu TLS 1.2 během vytváření centra IoT

  4. Klikněte na Vytvořit.

  5. Připojení zařízení IoT k tomuto IoT Hubu

Pokud chcete k vytvoření použít šablonu ARM, zřiďte novou službu IoT Hub v libovolné z podporovaných oblastí a nastavte minTlsVersion vlastnost na 1.2 specifikaci prostředku:

{
    "$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
            }
        }
    ]
}

Vytvořený prostředek IoT Hubu pomocí této konfigurace odmítne klienty zařízení a služeb, kteří se pokusí připojit pomocí protokolu TLS verze 1.0 a 1.1. Podobně se metoda handshake protokolu TLS odmítne, pokud ClientHello zpráva nevypíše žádné doporučené šifry.

Poznámka:

Vlastnost minTlsVersion je jen pro čtení a po vytvoření prostředku IoT Hubu ji nejde změnit. Proto je nezbytné správně otestovat a ověřit, že všechna vaše zařízení a služby IoT jsou kompatibilní s protokolem TLS 1.2 a doporučenými šifrováními předem.

Po převzetí služeb při selhání minTlsVersion zůstává vlastnost ioT Hubu platná v geografické spárované oblasti po převzetí služeb při selhání.

Kontrola verzí PROTOKOLU TLS pro zařízení IoT Hubu

Azure IoT Hub může poskytovat diagnostické protokoly pro několik kategorií, které je možné analyzovat pomocí protokolů služby Azure Monitor. V protokolu připojení najdete verzi protokolu TLS pro vaše zařízení IoT Hubu.

Pokud chcete zobrazit tyto protokoly, postupujte takto:

  1. Na webu Azure Portal přejděte do centra IoT.
  2. V nabídce prostředků v části Monitorování vyberte Nastavení diagnostiky. Ujistěte se, že je u nastavení diagnostiky zaškrtnutá možnost Připojení.
  3. V nabídce prostředků v části Monitorování vyberte Protokoly.
  4. Zadejte následující dotaz:
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. Příklad výsledků dotazu vypadá takto: Diagram znázorňující dotaz na verzi protokolu TLS zařízení
  2. Poznámka: Dotaz na verzi protokolu TLS není k dispozici pro zařízení používající připojení HTTPS.

Konfigurace protokolu TLS pro sadu SDK a IoT Edge

Pomocí následujících odkazů nakonfigurujte protokol TLS 1.2 a povolené šifry v klientských sadách SDK služby IoT Hub.

Jazyk Verze podporující protokol TLS 1.2 Dokumentace
C Značka 2019-12-11 nebo novější Odkaz
Python Verze 2.0.0 nebo novější Odkaz
C# Verze 1.21.4 nebo novější Odkaz
Java Verze 1.19.0 nebo novější Odkaz
NodeJS Verze 1.12.2 nebo novější Odkaz

Zařízení IoT Edge je možné nakonfigurovat tak, aby při komunikaci se službou IoT Hub používala protokol TLS 1.2. K tomuto účelu použijte stránku dokumentace k IoT Edge.

Certifikát TLS serveru ECC (Elliptic Curve Cryptography)

I když nabízí podobné zabezpečení jako certifikáty RSA, ověřování certifikátů ECC (s šifrovacími sadami pouze ECC) využívá až 40 % méně výpočetních prostředků, paměti a šířky pásma. Tyto úspory jsou pro zařízení IoT důležité kvůli menším profilům a paměti a k podpoře případů použití v prostředích s omezenou šířkou pásma sítě.

Použití certifikátu serveru ECC služby IoT Hub:

  1. Ujistěte se, že všechna zařízení důvěřují následujícím kořenovým certifikačním autoritám:
    • Globální certifikační autorita DigiCert G2
    • Kořenová certifikační autorita Microsoft RSA 2017
  2. Nakonfigurujte klienta tak, aby zahrnoval pouze šifrovací sady ECDSA a vyloučily všechny sady šifer ECDSA. Toto jsou podporované šifrovací sady pro certifikát 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. Připojte klienta k centru IoT.

Vyjednávání maximální délky fragmentu protokolu TLS

IoT Hub také podporuje vyjednávání maximální délky fragmentů protokolu TLS, které se někdy označuje jako vyjednávání velikosti rámce TLS. Tato funkce je ve verzi Public Preview.

Tato funkce slouží k určení maximální délky fragmentu prostého textu na hodnotu menší než výchozích 2^14 bajtů. Jakmile vyjednáte, IoT Hub a klient začnou fragmentovat zprávy, aby se zajistilo, že všechny fragmenty jsou menší než vyjednaná délka. Toto chování je užitečné pro výpočetní nebo paměť omezená zařízení. Další informace najdete v oficiální specifikaci rozšíření TLS.

Oficiální podpora sady SDK pro tuto funkci Public Preview ještě není dostupná. Začínáme

  1. Vytvořit IoT Hub.
  2. Při použití OpenSSL zavolejte SSL_CTX_set_tlsext_max_fragment_length určit velikost fragmentu.
  3. Připojte klienta ke službě IoT Hub.

Připnutí certifikátu

Připnutí a filtrování certifikátů serveru TLS a zprostředkujících certifikátů přidružených ke koncovým bodům služby IoT Hub se důrazně nedoporučuje, protože Microsoft tyto certifikáty často zahrnuje s minimálním nebo žádným upozorněním. Pokud potřebujete, připněte kořenové certifikáty, jak je popsáno v tomto blogovém příspěvku Azure IoT.

Další kroky