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 dina DPS-instanser så att de endast tillåter enhetsklientanslutningar som använder en lägsta TLS-version eller senare.
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-resursinställning minTlsVersion
som egenskapen till 1.2
i din Azure Resource Manager-mallens 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.
Anteckning
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 chiffreringarna i förväg.
Anteckning
Vid redundansväxlingar förblir egenskapen för minTlsVersion
din DPS gällande i den geo-parkopplade 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 för närvarande fortfarande av DPS men kommer att avskrivas. Använd de rekommenderade chiffersviterna ovan 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.
Fäst certifikat
Det rekommenderas starkt 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 måste kan du bara fästa rotcertifikaten enligt beskrivningen i det här Azure IoT-blogginlägget.
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 | Tagg 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 att använda TLS 1.2 vid kommunikation med enheter. Mer information finns i Ta bort TLS 1.0 och 1.1 för IoT Hub.
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 IoT Edge dokumentation.