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:
- Hozzon létre egy új IoT Hubot, amelyen be van kapcsolva az előnézeti mód.
- 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
- Csatlakoztassa az ügyfelet az előzetes verziójú IoT Hubhoz.
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.
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 ClientHello
haszná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ó |
---|---|---|
C | 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
- Hozzon létre egy új IoT Hubot, amelyen be van kapcsolva az előnézeti mód.
- OpenSSL használatakor hívja meg a SSL_CTX_set_tlsext_max_fragment_length a töredék méretének megadásához.
- Csatlakoztassa az ügyfelet az előzetes verziójú IoT Hubhoz.
Következő lépések
- Az IoT Hub biztonságáról és hozzáférés-vezérléséről további információt az IoT Hubhoz való hozzáférés szabályozása című témakörben talál.
- További információ az X509-tanúsítvány eszközhitelesítéshez való használatáról: Eszközhitelesítés X.509 hitelesítésszolgáltatói tanúsítványokkal