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.
Feljegyzés
Az Azure IoT Hub 2025. augusztus 31-én megszűnik a TLS 1.0 és 1.1 szolgáltatásra vonatkozó, az Azure-ra vonatkozó bejelentésével összhangban a TLS 1.0 és 1.1támogatása.
Ezért elengedhetetlen, hogy megfelelően tesztelje és ellenőrizze, hogy az összes IoT-eszköze és szolgáltatása kompatibilis-e a TLS 1.2-vel és az ajánlott rejtjelekkel . Erősen ajánlott a minimális TLS-kényszerítési funkció használata tesztelési és megfelelőségi mechanizmusként
Az IoT Hub-eszközök által használt TLS verziójának megtekintéséhez tekintse meg a TLS 1.0-s és 1.1-es verziójának támogatási útmutatóját.
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 X.509 ügyféltanúsítvány vagy X.509 ujjlenyomat használatával hitelesíti az ügyfelet. Az IoT Hub a hitelesítés befejezése után végzi az engedélyezést.
Az Advanced Message Queuing Protocol (AMQP) és a Message Queuing Telemetry Transport (MQTT) protokollok esetében 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
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 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ó: Identitások hitelesítése X.509-tanúsítványokkal.
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 globális Azure-felhőben található összes IoT Hub a DigiCert Global Root G2 által kiadott TLS-tanúsítványt használja.
Határozottan javasoljuk, hogy minden eszköz megbízhatónak minősítse a következő három fő hitelesítésszolgáltatót:
- 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.
A legfelső szintű hitelesítésszolgáltató áttelepítése ritkán fordul elő. Mindig készítse elő az IoT-megoldást arra a valószínűtlen esetre, ha a legfelső szintű hitelesítésszolgáltató biztonsága sérül, és szükség van egy vészhelyzeti legfelső szintű hitelesítésszolgáltató migrálására.
Titkosítási csomagok
A biztonságos kapcsolat azure-beli biztonsági szabályzatának betartása érdekében az IoT Hub a következő RSA- és ECDSA-titkosítási csomagokat támogatja a TLS 1.2-hez:
- 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
Az alábbi titkosítási csomagok jelenleg engedélyezettek az IoT Hubban. Ezeket a titkosítási csomagokat azonban az Azure biztonsági irányelvei már nem javasolják.
Titkosítási csomagok | TLS-verzió támogatása |
---|---|
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 |
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
.
Az IoT Hub kényszerítése TLS 1.2 és erős titkosítási csomagok használatára
Annak érdekében, hogy az IoT-eszközök TLS 1.2-s és erős titkosítási csomagokkal rendelkezzenek , kényszerítheti a megfelelőséget az Azure IoT Hub minimális TLS-kényszerítési funkciójával.
Ez a funkció jelenleg csak a következő régiókban és az IoT Hub létrehozása során érhető el (2025-ben más Azure-régiók is támogatottak):
- 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 és az erős titkosítási csomagok kényszerítése az Azure Portalon:
Bámulás az IoT Hub létrehozási varázslójával az Azure Portalon
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.
Kattintson a Létrehozás gombra
IoT-eszközök csatlakoztatása ehhez az IoT Hubhoz
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ása is elutasításra kerül, ha az ClientHello
üzenet nem sorolja fel a javasolt titkosításokat.
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 az összes 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.
TLS-verziók ellenőrzése IoT Hub-eszközök esetén
Az Azure IoT Hub diagnosztikai naplókat biztosíthat több olyan kategóriához, amelyek elemezhetők az Azure Monitor-naplók használatával. A kapcsolatnaplóban megtalálja az IoT Hub-eszközök TLS-verzióját.
A naplók megtekintéséhez kövesse az alábbi lépéseket:
- Az Azure Portalon nyissa meg az IoT Hubot.
- A Figyelés erőforrás menüjében válassza a Diagnosztikai beállítások lehetőséget. Győződjön meg arról, hogy a diagnosztikai beállításokban a "Kapcsolatok" jelölőnégyzet be van jelölve.
- A Figyelés erőforrás menüjében válassza a Naplók lehetőséget.
- Adja meg a következő lekérdezést:
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
- Egy példa a lekérdezés eredményeire a következőképpen néz ki:
- Megjegyzés: A TLS-verzió lekérdezése nem érhető el HTTPS-kapcsolatokat használó eszközökhöz.
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 |
Node.js | 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.
Elliptikus görbe titkosítási (ECC) kiszolgálói TLS-tanúsítvány
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.
Az IoT Hub ECC-kiszolgálótanúsítványának használata:
- Győződjön meg arról, hogy az összes eszköz megbízik a következő legfelső szintű hitelesítésszolgáltatókban:
- DigiCert Global G2 root CA
- Microsoft RSA root CA 2017
-
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 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 IoT Hubhoz.
TLS maximális töredékhossz egyeztetése
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
- IoT Hub létrehozása
- 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 IoT Hubhoz.
Tanúsítvány rögzítése
Az IoT Hub-végpontokhoz társított TLS-kiszolgálótanúsítványok és 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 ezeket a tanúsítványokat a Microsoft gyakran csak kis vagy egyáltalán nem veszi észre. Ha szükséges, csak a főtanúsítványokat rögzítse az Azure IoT-blogbejegyzésben leírtak szerint.
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