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 minulosti byly certifikáty všechny kořenové certifikační autority Baltimore Cybertrust. Protože kořen Baltimore je na konci životnosti, jsme v procesu migrace na nový kořen s názvem DigiCert Global G2. Tato migrace má vliv na všechna zařízení, která se aktuálně připojují ke službě IoT Hub. Další informace najdete v tématu Aktualizace certifikátu IOT TLS.

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 třem kořenovým certifikačním autoritám:

  • Baltimore CyberTrust root CA
  • 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.

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řipojení klienta do centra IoT 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
  • USA – západ 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.

    Screenshot showing how to turn on TLS 1.2 enforcement during IoT hub creation

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ě bude metoda handshake protokolu TLS odmítnuta, 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, budou také vynucovat 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.

Připnutí certifikátu

Připnutí a filtrování certifikátů serveru TLS (neboli listových certifikátů) 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.

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řipojení klienta do služby IoT Hub ve verzi Preview.

Další kroky