Transport Layer Security (TLS) támogatása az IoT Hubban

Az IoT Hub a Transport Layer Security (TLS) használatával védi az IoT-eszközök és -szolgáltatások kapcsolatait. A TLS protokoll jelenleg három verzióját támogatja, nevezetesen az 1.0-s, az 1.1-s és az 1.2-s verziót.

A TLS 1.0 és az 1.1 örököltnek minősül, és elavuláshoz tervezik. További információ: TLS 1.0 és 1.1 az IoT Hubhoz. A jövőbeli problémák elkerülése érdekében az IoT Hubhoz való csatlakozáskor a TLS 1.2 legyen az egyetlen TLS-verzió.

Az IoT Hub kiszolgálói TLS-tanúsítványa

TLS-kézfogás során az IoT Hub RSA-kulcsú kiszolgálótanúsítványokat mutat be az ügyfelek csatlakoztatásához. A múltban a tanúsítványok mindegyike a Baltimore Cybertrust root ca-ból származott. Mivel a baltimore-i gyökér az élettartam végén van, folyamatban van a DigiCert Global G2 nevű új gyökérre való migrálás. Ez az áttelepítés hatással van az IoT Hubhoz jelenleg csatlakozó összes eszközre. További információ: IoT TLS-tanúsítványfrissítés.

Bár a legfelső szintű hitelesítésszolgáltató áttelepítése ritkán fordul elő, a modern biztonsági környezet rugalmassága érdekében elő kell készítenie az IoT-forgatókönyvet arra a valószínűtlen esetre, ha a legfelső szintű hitelesítésszolgáltató biztonsága sérül, vagy szükség van egy vészhelyzeti legfelső szintű hitelesítésszolgáltató migrálására. Határozottan javasoljuk, hogy minden eszköz megbízhatónak minősítse a következő három fő hitelesítésszolgáltatót:

  • Baltimore CyberTrust legfelső szintű hitelesítésszolgáltató
  • DigiCert Global G2 root CA
  • Microsoft RSA root CA 2017

A tanúsítványok letöltésére mutató hivatkozásokért tekintse meg az Azure Tanúsítványszolgáltató adatait.

Elliptikus görbe titkosítási (ECC) kiszolgálói TLS-tanúsítvány (előzetes verzió)

Az IoT Hub ECC-kiszolgáló TLS-tanúsítványa nyilvános előzetes verzióban érhető el. Bár az RSA-tanúsítványokhoz hasonló biztonságot nyújt, az ECC-tanúsítványok érvényesítése (csak ECC-titkosítási csomagokkal) akár 40%-kal kevesebb számítási, memória- és sávszélesség-használatot is igénybe vesz. Ezek a megtakarítások a kisebb profilok és a memória miatt fontosak az IoT-eszközök számára, és támogatják a korlátozott hálózati sávszélességű környezetekben való használatot.

Határozottan javasoljuk, hogy az ECC-t használó összes eszköz megbízhatónak minősítse a következő két legfelső szintű hitelesítésszolgáltatót:

  • DigiCert Global G3 root CA
  • Microsoft RSA root CA 2017

A tanúsítványok letöltésére mutató hivatkozásokért tekintse meg az Azure Tanúsítványszolgáltató adatait.

Az IoT Hub ECC-kiszolgálótanúsítványának megtekintése:

  1. Hozzon létre egy új IoT Hubot, amelyen be van kapcsolva az előnézeti mód.
  2. Konfigurálja az ügyfelet úgy, hogy csak ECDSA-titkosítási csomagokat tartalmazzon, és zárja ki az RSA-csomagokat. Ezek az ECC-tanúsítvány nyilvános előzetes verziójának támogatott titkosítási csomagjai:
    • 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. Csatlakozás az ügyfelet az előzetes verziójú IoT Hubra.

A TLS 1.2-kényszerítése elérhető a kiválasztott régiókban

A biztonság érdekében konfigurálja az IoT Hubokat úgy, hogy csak a TLS 1.2-es verzióját használó ügyfélkapcsolatokat engedélyezze, és kényszerítse ki a titkosítási csomagok használatát. Ez a funkció csak ezekben a régiókban támogatott:

  • USA keleti régiója
  • USA déli középső régiója
  • USA 2. nyugati régiója
  • USA-beli államigazgatás – Arizona
  • US Gov Virginia (A TLS 1.0/1.1 támogatása ebben a régióban nem érhető el – A TLS 1.2 kényszerítését engedélyezni kell, vagy az IoT Hub létrehozása sikertelen)

A TLS 1.2-kényszerítés engedélyezéséhez kövesse az IoT Hub létrehozása az Azure Portalon című témakörben leírt lépéseket, kivéve

  • Válasszon egy régiót a fenti lista egyikéből.

  • A Felügyelet – Speciális –>> Átviteli réteg biztonsága (TLS) –> Minimális TLS-verzió, válassza az 1.2 lehetőséget. Ez a beállítás csak a támogatott régióban létrehozott IoT Hub esetében jelenik meg.

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

Ha ARM-sablont szeretne használni a létrehozáshoz, építsen ki egy új IoT Hubot bármelyik támogatott régióban, és állítsa be a minTlsVersion tulajdonságot 1.2 az erőforrás-specifikációban:

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

Az ezzel a konfigurációval létrehozott IoT Hub-erőforrás elutasítja azokat az eszköz- és szolgáltatás-ügyfeleket, amelyek TLS 1.0 és 1.1 verzióval próbálnak csatlakozni. Hasonlóképpen, a TLS-kézfogás is elutasításra kerül, ha az ClientHello üzenet nem sorolja fel a javasolt rejtjeleket.

Feljegyzés

A minTlsVersion tulajdonság írásvédett, és nem módosítható az IoT Hub-erőforrás létrehozása után. Ezért elengedhetetlen, hogy megfelelően tesztelje és ellenőrizze, hogy minden IoT-eszköze és szolgáltatása kompatibilis-e a TLS 1.2-vel és az ajánlott rejtjelekkel .

Feladatátvétel esetén az minTlsVersion IoT Hub tulajdonsága a feladatátvétel utáni geopáros régióban is érvényes marad.

Titkosítócsomagok

A csak TLS 1.2 használatára konfigurált IoT Hubok a következő ajánlott titkosítási csomagok használatát is kikényszeríteni fogják:

  • 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

A TLS 1.2-kényszerítéshez nem konfigurált IoT Hubs esetében a TLS 1.2 továbbra is a következő titkosítási csomagokkal működik:

  • 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(Ez a titkosítás 2022. 01. 10-én megszűnik, és a továbbiakban nem lesz használva TLS-kézfogásokhoz)

Az ügyfél javasolhat egy listát a magasabb titkosítási csomagokról, amelyet a rendszer a használat során ClientHellohasznál. Előfordulhat azonban, hogy az IoT Hub nem támogatja őket (például ECDHE-ECDSA-AES256-GCM-SHA384). Ebben az esetben az IoT Hub megpróbálja követni az ügyfél preferenciáját, de végül tárgyalni fog a titkosítási csomaggal ServerHello.

TLS-konfiguráció az SDK-hoz és az IoT Edge-hez

Az alábbi hivatkozások segítségével konfigurálhatja a TLS 1.2-t és az engedélyezett titkosításokat az IoT Hub ügyféloldali SDK-kban.

Nyelv TLS 1.2-t támogató verziók Dokumentáció
K Címke 2019-12-11 vagy újabb Láncszem
Python 2.0.0-s vagy újabb verzió Láncszem
C# 1.21.4-es vagy újabb verzió Láncszem
Java 1.19.0-s vagy újabb verzió Láncszem
NodeJS 1.12.2-es vagy újabb verzió Láncszem

Az IoT Edge-eszközök úgy konfigurálhatók, hogy a TLS 1.2-t használják az IoT Hubbal való kommunikáció során. Ehhez használja az IoT Edge dokumentációs oldalát.

Eszközhitelesítés

Sikeres TLS-kézfogás után az IoT Hub szimmetrikus kulccsal vagy X.509-tanúsítvánnyal hitelesíthet egy eszközt. Tanúsítványalapú hitelesítés esetén ez bármilyen X.509-tanúsítvány lehet, beleértve az ECC-t is. Az IoT Hub a tanúsítványt az Ön által megadott ujjlenyomattal vagy hitelesítésszolgáltatóval (CA) ellenőrzi. További információ: Támogatott X.509-tanúsítványok.

Kölcsönös TLS-támogatás

A kölcsönös TLS-hitelesítés biztosítja, hogy az ügyfél hitelesítse a kiszolgálói (IoT Hub) tanúsítványt, a kiszolgáló (IoT Hub) pedig hitelesíti az X.509 ügyféltanúsítványt vagy az X.509 ujjlenyomatot. Az engedélyezést az IoT Hub hajtja végre a hitelesítés befejezése után.

AMQP- és MQTT-protokollok esetén az IoT Hub ügyféltanúsítványt kér a kezdeti TLS-kézfogásban. Ha van ilyen, az IoT Hub hitelesíti az ügyféltanúsítványt, és az ügyfél hitelesíti az IoT Hub-tanúsítványt. Ezt a folyamatot kölcsönös TLS-hitelesítésnek nevezzük. Amikor az IoT Hub MQTT connect csomagot kap, vagy megnyílik egy AMQP-hivatkozás, az IoT Hub elvégzi a kérelmező ügyfél engedélyezését , és megállapítja, hogy az ügyfél X.509-hitelesítést igényel-e. Ha a kölcsönös TLS-hitelesítés befejeződött, és az ügyfél jogosult az eszközként való csatlakozásra, az engedélyezett. Ha azonban az ügyfél X.509-hitelesítést igényel, és az ügyfélhitelesítés nem fejeződött be a TLS-kézfogás során, az IoT Hub elutasítja a kapcsolatot.

HTTP-protokoll esetén az ügyfél első kérésének végrehajtásakor az IoT Hub ellenőrzi, hogy az ügyfél X.509-hitelesítést igényel-e, és ha az ügyfélhitelesítés befejeződött, akkor az IoT Hub elvégzi az engedélyezést. Ha az ügyfélhitelesítés nem fejeződött be, az IoT Hub elutasítja a kapcsolatot

Tanúsítvány rögzítése

A TLS-kiszolgálótanúsítványok (más néven levéltanúsítványok) és az IoT Hub-végpontokhoz társított köztes tanúsítványok tanúsítványrögzítését és szűrését erősen elriasztja a Microsoft, mivel a Microsoft ezeket a tanúsítványokat gyakran kis vagy egyáltalán nem értesítés nélkül dobja be. Ha szükséges, csak a főtanúsítványokat rögzítse az Azure IoT-blogbejegyzésben leírtak szerint.

TLS maximális töredékhossz egyeztetése (előzetes verzió)

Az IoT Hub támogatja a TLS maximális töredékhossz-egyeztetését is, amelyet TLS-keretméret-egyeztetésnek is neveznek. Ez a funkció nyilvános előzetes verzióban érhető el.

Ezzel a funkcióval megadhatja az egyszerű szöveges töredék maximális hosszát az alapértelmezett 2^14 bájtnál kisebb értékre. A tárgyalás után az IoT Hub és az ügyfél megkezdi az üzenetek töredezettségét, hogy az összes töredék kisebb legyen a egyeztetett hossznál. Ez a viselkedés hasznos lehet a korlátozott számítási vagy memóriakorlátozott eszközök esetén. További információkért tekintse meg a hivatalos TLS-bővítmény specifikációt.

A nyilvános előzetes verziójú funkció hivatalos SDK-támogatása még nem érhető el. Első lépések

  1. Hozzon létre egy új IoT Hubot, amelyen be van kapcsolva az előnézeti mód.
  2. OpenSSL használatakor hívja meg a SSL_CTX_set_tlsext_max_fragment_length a töredék méretének megadásához.
  3. Csatlakozás az ügyfelet az előzetes verziójú IoT Hubra.

Következő lépések