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). V současné době se podporují tři verze protokolu TLS, konkrétně verze 1.0, 1.1 a 1.2.

Protokoly TLS 1.0 a 1.1 se považují za starší a plánují se pro vyřazení. Další informace najdete v tématu Vyřazení protokolu TLS 1.0 a 1.1 pro IoT Hub. Abyste se vyhnuli budoucím problémům, použijte při připojování ke službě IoT Hub protokol TLS 1.2 jako jedinou verzi PROTOKOLU TLS.

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.

Doporučujeme také do zařízení přidat certifikáty kořenové certifikační autority Microsoft RSA 2017, aby se zabránilo přerušení v případě neočekávaného vyřazení globálního kořenového adresáře DigiCert G2. I když jsou migrace kořenové certifikační autority vzácné, pro odolnost v moderním prostředí zabezpečení byste měli připravit scénář IoT na nepravděpodobné události, že dojde k ohrožení kořenové certifikační autority nebo je nutná migrace kořenové certifikační autority.

Důrazně doporučujeme, aby všechna zařízení důvěřovala 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

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

Důvěryhodnost certifikátu v sadách SDK

Sady SDK zařízení Azure IoT se připojují a ověřují zařízení ke službám Azure IoT. Různé sady SDK spravují certifikáty různými způsoby v závislosti na jazyce a verzi, ale většina z nich spoléhá na důvěryhodné úložiště certifikátů zařízení, nikoli na připnutí certifikátů přímo do základu kódu. Tento přístup poskytuje flexibilitu a odolnost pro zpracování budoucích změn v kořenových certifikátech.

Následující tabulka shrnuje, které verze sady SDK podporují úložiště důvěryhodných certifikátů:

Sada SDK pro zařízení Azure IoT Podporované verze
C Všechny aktuálně podporované verze
C# Všechny aktuálně podporované verze
Java Verze 2.x.x a vyšší
Node.js Všechny aktuálně podporované verze
Python Všechny aktuálně podporované verze

Připnutí certifikátu

Připnutí a filtrování certifikátů serveru TLS (označovaných také jako listové certifikáty) a zprostředkující certifikáty přidružené ke koncovým bodům služby IoT Hub se 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 pouze kořenové certifikáty.

Certifikát TLS serveru ECC (Elliptic Curve Cryptography) (Preview)

Pro verzi Public Preview je k dispozici certifikát TLS serveru ECC služby IoT Hub. 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ě.

Důrazně doporučujeme, aby všechna zařízení používající ECC důvěřovala následujícím dvěma kořenovým certifikačním autoritám:

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

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

Náhled certifikátu serveru ECC služby IoT Hub:

  1. Vytvořte nové centrum IoT s zapnutým režimem náhledu.
  2. Nakonfigurujte klienta tak, aby zahrnoval pouze šifrovací sady ECDSA a vyloučily všechny sady šifer ECDSA. Toto jsou podporované šifrovací sady pro veřejný náhled certifikátu 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 ke službě IoT Hub ve verzi Preview.

Vynucení protokolu TLS 1.2 dostupné ve vybraných oblastech

Pokud chcete přidat zabezpečení, nakonfigurujte ioT Hubs tak, aby povolovali pouze klientská připojení, která používají protokol TLS verze 1.2, a vynucujte použití šifrovacích sad. Tato funkce je podporována pouze v těchto oblastech:

  • 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)

Pokud chcete povolit vynucování protokolu TLS 1.2, postupujte podle kroků v tématu Vytvoření centra IoT na webu Azure Portal s výjimkou

  • V seznamu výše vyberte oblast.

  • 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

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 nelze změnit. Proto je nezbytné správně testovat 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ůstane vlastnost ioT Hubu platná v geografické spárované oblasti po převzetí služeb při selhání.

Šifrovací sady

Služby IoT Hub, které jsou nakonfigurované tak, aby přijímaly pouze protokol TLS 1.2, také vynucují použití následujících doporučených šifrovacích sad:

  • 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

Pro služby IoT Hubs, které nejsou nakonfigurované pro vynucení protokolu TLS 1.2, protokol TLS 1.2 stále funguje s následujícími šifrovacími sadami:

  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA(Tato šifra bude 10. 10. 2022 zastaralá a už se nebude používat pro metody handshake tls)

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.

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.

Ověřování zařízení

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átů to může být libovolný certifikát X.509, včetně ECC. IoT Hub ověří certifikát vůči kryptografickému otisku nebo certifikační autoritě, kterou zadáte. Další informace najdete v tématu Podporované certifikáty X.509.

Vzájemná podpora protokolu TLS

Vzájemné ověřování TLS zajišťuje, že klient ověří certifikát serveru (IoT Hub) a server (IoT Hub) ověří klientský certifikát X.509 nebo kryptografický otisk X.509. Po dokončení ověřování provádí Služba IoT Hub autorizaci.

V případě protokolů AMQP a MQTT si IoT Hub vyžádá klientský certifikát v počátečním handshake protokolu TLS. 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 však 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.

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

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řte nové centrum IoT s zapnutým režimem náhledu.
  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 ve verzi Preview.

Další kroky