TLS-támogatás az Azure IoT Hub Device Provisioning Service-ben (DPS)

A DPS a Transport Layer Security (TLS) használatával védi az IoT-eszközökről érkező kapcsolatokat.

A DPS által támogatott jelenlegi TLS protokollverziók a következők:

  • TLS 1.2

Kapcsolatok korlátozása minimális TLS-verzióra

A DPS-példányokat úgy konfigurálhatja, hogy csak olyan eszközügyfél-kapcsolatokat engedélyezzenek, amelyek legalább TLS-verziót használnak.

Fontos

A DPS jelenleg csak a TLS 1.2-t támogatja, ezért DPS-példány létrehozásakor nem kell megadni a minimális TLS-verziót. Ez a funkció a jövőbeli bővítéshez érhető el.

Ehhez ki kell építenie egy új DPS-erőforrást, amely a tulajdonságot 1.2 az minTlsVersion Azure Resource Manager-sablon DPS-erőforrás-specifikációjában állítja be. Az alábbi JSON-példasablon egy új DPS-példány tulajdonságát minTlsVersion adja meg.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Devices/ProvisioningServices",
            "apiVersion": "2020-01-01",
            "name": "<provide-a-valid-DPS-resource-name>",
            "location": "<any-region>",
            "properties": {
                "minTlsVersion": "1.2"
            },
            "sku": {
                "name": "S1",
                "capacity": 1
            },
        }     
    ]
}

A sablont az alábbi Azure CLI-paranccsal helyezheti üzembe.

az deployment group create -g <your resource group name> --template-file template.json

További információ a DPS-erőforrások Resource Manager-sablonokkal való létrehozásáról: A DPS beállítása Azure Resource Manager-sablonnal.

Az ezzel a konfigurációval létrehozott DPS-erőforrás elutasítja azokat az eszközöket, amelyek TLS 1.0 és 1.1 verzióval próbálnak csatlakozni.

Feljegyzés

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

Feljegyzés

Feladatátvételkor a minTlsVersion DPS tulajdonsága a feladatátvétel utáni geopáros régióban is érvényes marad.

A DPS-példányok az alábbi ajánlott és örökölt titkosítási csomagok használatát kényszerítik ki:

Ajánlott TLS 1.2 titkosítási csomagok
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

Régi titkosítási csomagok

Ezeket a titkosítási csomagokat a DPS továbbra is támogatja, de elavulttá válik. Ha lehetséges, használja az ajánlott titkosítási csomagokat.

1. lehetőség (jobb biztonság)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)
TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
2. lehetőség (jobb teljesítmény)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256 (uses SHA-1)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384 (uses SHA-1)
TLS_RSA_WITH_AES_128_GCM_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_GCM_SHA384 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA256 (lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_128_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)
TLS_RSA_WITH_AES_256_CBC_SHA (uses SHA-1, lack of Perfect Forward Secrecy)

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

Ha a DPS-regisztrációk X.509-hitelesítéshez vannak konfigurálva, a DPS támogatja a kölcsönös TLS-t (mTLS).

Kiszolgálói TLS-tanúsítvány

A TLS-kézfogás során a DPS RSA-kulcsú kiszolgálótanúsítványokat mutat be az ügyfelek csatlakoztatásához. A globális Azure-felhő összes DPS-példánya a DigiCert Global Root G2 tanúsítvány által kiadott TLS-tanúsítványt használja.

Azt is javasoljuk, hogy vegye fel a Microsoft RSA Főtanúsítvány-szolgáltató 2017-tanúsítványokat az eszközeire, hogy megelőzze a digiCert global root G2 váratlan kivonását. 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ő legfelső szintű hitelesítésszolgáltatókat:

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

Tanúsítványmegbízhatóság az SDK-kban

Az Azure IoT-eszköz SDK-k csatlakoztatják és hitelesítik az eszközöket az Azure IoT-szolgáltatásokhoz. A különböző SDK-k különböző módon kezelik a tanúsítványokat a nyelvtől és a verziótól függően, de a legtöbben az eszköz megbízható tanúsítványtárolójára támaszkodnak ahelyett, hogy közvetlenül a kódbázisban rögzítenék a tanúsítványokat. Ez a megközelítés rugalmasságot és rugalmasságot biztosít a főtanúsítványok jövőbeni változásainak kezeléséhez.

Az alábbi táblázat összefoglalja, hogy mely SDK-verziók támogatják a megbízható tanúsítványtárolót:

Azure IoT eszközoldali SDK Támogatott verziók
C Az összes jelenleg támogatott verzió
C# Az összes jelenleg támogatott verzió
Java 2.x.x és újabb verzió
Node.js Az összes jelenleg támogatott verzió
Python Az összes jelenleg támogatott verzió

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

A DPS-végpontokhoz társított TLS-kiszolgálótanúsítványok (más néven levéltanúsítványok) és köztes tanúsítványok rögzítése és szűrése nem ajánlott, mivel a Microsoft gyakran kis vagy egyáltalán nem értesítés nélkül dobja ezeket a tanúsítványokat. Ha szükséges, csak a főtanúsítványokat rögzítse.

TLS 1.2 használata az IoT SDK-kban

Az alábbi hivatkozások segítségével konfigurálhatja a TLS 1.2-t és az engedélyezett titkosításokat az Azure IoT ü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

A TLS 1.2 használata az IoT Hubbal

Az IoT Hub konfigurálható a TLS 1.2 használatára az eszközökkel való kommunikáció során. További információ: IoT Hub TLS-kényszerítés.

A TLS 1.2 használata az IoT Edge-lel

Az IoT Edge-eszközök úgy konfigurálhatók, hogy a TLS 1.2-t használják az IoT Hubbal és a DPS-vel való kommunikáció során. További információt az IoT Edge dokumentációs oldalán talál.