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.
Rekommenderade chiffer
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.