Dela via


TLS-stöd i Azure IoT Hub Device Provisioning Service (DPS)

DPS använder TLS (Transport Layer Security) för att skydda anslutningar från IoT-enheter.

Aktuella TLS-protokollversioner som stöds av DPS är:

  • TLS 1.2

Begränsa anslutningar till en lägsta TLS-version

Du kan konfigurera DPS-instanserna så att de endast tillåter enhetsklientanslutningar som använder en lägsta TLS-version eller högre.

Viktigt!

För närvarande stöder DPS endast TLS 1.2, så du behöver inte ange den lägsta TLS-versionen när du skapar en DPS-instans. Den här funktionen tillhandahålls för framtida expansion.

Det gör du genom att etablera en ny DPS-resurs som anger minTlsVersion egenskapen till 1.2 i din Azure Resource Manager-malls DPS-resursspecifikation. Följande exempelmall JSON anger minTlsVersion egenskapen för en ny DPS-instans.

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

Du kan distribuera mallen med följande Azure CLI-kommando.

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

Mer information om hur du skapar DPS-resurser med Resource Manager-mallar finns i Konfigurera DPS med en Azure Resource Manager-mall.

DPS-resursen som skapas med den här konfigurationen nekar enheter som försöker ansluta med TLS-versionerna 1.0 och 1.1.

Kommentar

Egenskapen minTlsVersion är skrivskyddad och kan inte ändras när DPS-resursen har skapats. Därför är det viktigt att du testar och verifierar att alla dina IoT-enheter är kompatibla med TLS 1.2 och de rekommenderade chifferna i förväg.

Kommentar

Vid redundansväxlingar minTlsVersion förblir dps-egenskapen effektiv i den geo-kopplade regionen efter redundansväxlingen.

DPS-instanser tillämpar användningen av följande rekommenderade och äldre chiffersviter:

Rekommenderade TLS 1.2 chiffersviter
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

Äldre chiffersviter

Dessa chiffersviter stöds fortfarande av DPS men skrivs av. Använd de rekommenderade chiffersviterna om möjligt.

Alternativ 1 (bättre säkerhet)
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)
Alternativ 2 (bättre prestanda)
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)

Ömsesidigt TLS-stöd

När DPS-registreringar konfigureras för X.509-autentisering stöds ömsesidig TLS (mTLS) av DPS.

TLS-certifikat för server

Under en TLS-handskakning presenterar DPS RSA-nyckelade servercertifikat till anslutande klienter. Alla DPS-instanser i det globala Azure-molnet använder TLS-certifikatet som utfärdats av DigiCert Global Root G2-certifikatet.

Vi rekommenderar också att du lägger till Microsoft RSA Root Certificate Authority 2017-certifikaten till dina enheter för att förhindra störningar om DigiCert Global Root G2 oväntat dras tillbaka. Även om rot-CA-migreringar är sällsynta bör du förbereda IoT-scenariot för den osannolika händelsen att en rotcertifikatutfärdare komprometteras eller om en rot-CA-migrering krävs för nödsituationer.

Vi rekommenderar starkt att alla enheter litar på följande rotcertifikatutfärdare:

  • DigiCert Global G2-rotcertifikatutfärdare
  • Microsoft RSA-rotcertifikatutfärdare 2017

Länkar för att ladda ned dessa certifikat finns i Information om Azure Certificate Authority.

Certifikatförtroende för SDK:er

Azure IoT-enhetens SDK:er ansluter och autentiserar enheter till Azure IoT-tjänster. De olika SDK:erna hanterar certifikat på olika sätt beroende på språk och version, men de flesta förlitar sig på enhetens betrodda certifikatarkiv i stället för att fästa certifikat direkt i kodbasen. Den här metoden ger flexibilitet och motståndskraft för att hantera framtida ändringar i rotcertifikat.

I följande tabell sammanfattas vilka SDK-versioner som stöder det betrodda certifikatarkivet:

SDK för Azure IoT-enheter Versioner som stöds
C Alla versioner som stöds för närvarande
C# Alla versioner som stöds för närvarande
Java Version 2.x.x och senare
Node.js Alla versioner som stöds för närvarande
Python Alla versioner som stöds för närvarande

Fäst certifikat

Det rekommenderas inte att fästa och filtrera TLS-servercertifikaten (även kallade lövcertifikat) och mellanliggande certifikat som är associerade med DPS-slutpunkter eftersom Microsoft ofta rullar dessa certifikat med liten eller ingen varsel. Om du vill kan du bara fästa rotcertifikaten.

Använda TLS 1.2 i IoT SDK:er

Använd länkarna nedan för att konfigurera TLS 1.2 och tillåtna chiffer i Azure IoT-klient-SDK:er.

Språk Versioner som stöder TLS 1.2 Dokumentation
C Tagga 2019-12-11 eller senare Länk
Python Version 2.0.0 eller senare Länk
C# Version 1.21.4 eller senare Länk
Java Version 1.19.0 eller senare Länk
NodeJS Version 1.12.2 eller senare Länk

Använda TLS 1.2 med IoT Hub

IoT Hub kan konfigureras för att använda TLS 1.2 vid kommunikation med enheter. Mer information finns i IoT Hub TLS-tillämpning.

Använda TLS 1.2 med IoT Edge

IoT Edge-enheter kan konfigureras att använda TLS 1.2 vid kommunikation med IoT Hub och DPS. Mer information finns på sidan med IoT Edge-dokumentation.