Dela via


TLS-stöd (Transport Layer Security) i IoT Hub

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

Kommentar

Azure IoT Hub avslutar stödet för TLS 1.0 och 1.1 i enlighet med Azure Wide Service-meddelandet för TLS 1.0 och 1.1 som upphör den 31 augusti 2025.

Därför är det viktigt att du testar och verifierar att alla dina IoT-enheter och -tjänster är kompatibla med TLS 1.2 och de rekommenderade chiffer i förväg. Vi rekommenderar starkt att du använder den minsta TLS-tvingande funktionen som mekanism för testning och efterlevnad

Information om vilken version av TLS dina IoT Hub-enheter som körs finns i supportguiden för TLS 1.0 och 1.1.

Ömsesidigt TLS-stöd

Ömsesidig TLS-autentisering säkerställer att klienten autentiserar servercertifikatet (IoT Hub) och att servern (IoT Hub) autentiserar klienten med X.509-klientcertifikat eller X.509-tumavtryck. IoT Hub utför auktorisering när autentiseringen är klar.

För protokollen Advanced Message Queuing Protocol (AMQP) och Message Queuing Telemetry Transport (MQTT) begär IoT Hub ett klientcertifikat i den inledande TLS-handskakningen. Om ett sådant anges autentiserar IoT Hub klientcertifikatet och klienten autentiserar IoT Hub-certifikatet. Den här processen kallas ömsesidig TLS-autentisering. När IoT Hub tar emot ett MQTT-anslutningspaket eller en AMQP-länk öppnas, utför IoT Hub auktorisering för den begärande klienten och avgör om klienten kräver X.509-autentisering. Om ömsesidig TLS-autentisering slutfördes och klienten har behörighet att ansluta som enhet tillåts den. Men om klienten kräver X.509-autentisering och klientautentiseringen inte slutfördes under TLS-handskakningen avvisar IoT Hub anslutningen.

När klienten gör sin första begäran för HTTP-protokollet kontrollerar IoT Hub om klienten kräver X.509-autentisering och om klientautentiseringen har slutförts utför IoT Hub auktorisering. Om klientautentiseringen inte har slutförts avvisar IoT Hub anslutningen

Efter ett lyckat TLS-handslag kan IoT Hub autentisera en enhet med hjälp av en symmetrisk nyckel eller ett X.509-certifikat. För certifikatbaserad autentisering validerar IoT Hub certifikatet mot det tumavtryck eller certifikatutfärdare (CA) som du anger. Mer information finns i X.509-certifikat som stöds.

IoT Hub-serverns TLS-certifikat

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

Vi rekommenderar starkt att alla enheter litar på följande tre 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.

Rot-CA-migreringar är sällsynta. Du bör alltid förbereda din IoT-lösning för den osannolika händelsen att en rotcertifikatutfärdare komprometteras och en rot-CA-migrering för nödsituationer krävs.

Chiffersviter

För att följa Azures säkerhetsprincip för en säker anslutning stöder IoT Hub följande RSA- och ECDSA-chiffersviter för TLS 1.2:

  • 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

Följande chiffersviter är för närvarande tillåtna i IoT Hub. Dessa chiffersviter rekommenderas dock inte längre av Azures säkerhetsriktlinjer.

Chiffersviter Stöd för TLS-version
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

En klient kan föreslå en lista över högre chiffersviter som ska användas under ClientHello. Vissa av dem kanske inte stöds av IoT Hub (till exempel ECDHE-ECDSA-AES256-GCM-SHA384). I det här fallet försöker IoT Hub följa klientens inställningar, men så småningom förhandla ned chiffersviten med ServerHello.

Tvinga IoT Hub att använda TLS 1.2 och starka chiffersviter

För att säkerställa att dina IoT-enheter är TLS 1.2 och stark efterlevnad av chiffersviter kan du framtvinga efterlevnad med minsta TLS-tillämpningsfunktion i Azure IoT Hub.

För närvarande är den här funktionen endast tillgänglig i följande regioner och under skapandet av IoT Hub (andra Azure-regioner kommer att stödjas 2025):

  • USA, östra
  • USA, södra centrala
  • Västra USA 2
  • US Gov, Arizona
  • US Gov Virginia (TLS 1.0/1.1-stöd är inte tillgängligt i den här regionen – TLS 1.2-tvingande måste aktiveras eller så misslyckas IoT Hub-skapandet)

Aktivera tillämpning av TLS 1.2 och starka chiffersviter i Azure Portal:

  1. Stirra på guiden skapa IoT Hub i Azure Portal

  2. Välj en region från en i listan ovan.

  3. Under Hantering –> Avancerat –> TLS (Transport Layer Security) –> Lägsta TLS-version väljer du 1.2. Den här inställningen visas bara för IoT Hub som skapats i regionen som stöds.

    Skärmbild som visar hur du aktiverar TLS 1.2-tillämpning när IoT Hub skapas.

  4. Klicka på Skapa

  5. Ansluta dina IoT-enheter till den här IoT Hub

Om du vill använda ARM-mallen för att skapa etablerar du en ny IoT Hub i någon av de regioner som stöds och anger minTlsVersion egenskapen till 1.2 i resursspecifikationen:

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

Den skapade IoT Hub-resursen med den här konfigurationen nekar enhets- och tjänstklienter som försöker ansluta med TLS-versionerna 1.0 och 1.1. På samma sätt nekas TLS-handskakningen om meddelandet ClientHello inte visar någon av de rekommenderade chifferna.

Kommentar

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

Vid redundansväxlingar förblir egenskapen för minTlsVersion din IoT Hub effektiv i den geo-kopplade regionen efter redundansväxlingen.

Kontrollera TLS-versioner för IoT Hub-enheter

Azure IoT Hub kan tillhandahålla diagnostikloggar för flera kategorier som kan analyseras med hjälp av Azure Monitor-loggar. I anslutningsloggen hittar du TLS-versionen för dina IoT Hub-enheter.

Följ dessa steg om du vill visa loggarna:

  1. I Azure Portal går du till din IoT-hubb.
  2. I resursmenyn under Övervakning väljer du Diagnostikinställningar. Kontrollera att diagnostikinställningarna har markerats med "Anslutningar".
  3. På resursmenyn under Övervakning väljer du Loggar.
  4. Ange följande fråga:
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
  1. Ett exempel på frågeresultatet ser ut så här: Diagram som visar frågan för enhetens TLS-version.
  2. Obs! TLS-versionsfråga är inte tillgänglig för enheter som använder HTTPS-anslutningar.

TLS-konfiguration för SDK och IoT Edge

Använd följande länkar för att konfigurera TLS 1.2 och tillåtna chiffer i IoT Hub-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

IoT Edge-enheter kan konfigureras för att använda TLS 1.2 vid kommunikation med IoT Hub. För detta ändamål använder du IoT Edge-dokumentationssidan.

Elliptisk kurvkryptografi (ECC) server-TLS-certifikat

Ecc-certifikatverifiering (med endast ECC-chiffersviter) använder upp till 40 % mindre beräkning, minne och bandbredd, men erbjuder liknande säkerhet som RSA-certifikat. Dessa besparingar är viktiga för IoT-enheter på grund av deras mindre profiler och minne och för att stödja användningsfall i nätverksbandbreddsbegränsade miljöer.

Så här använder du IoT Hubs ECC-servercertifikat:

  1. Se till att alla enheter litar på följande rotcertifikatutfärdare:
    • DigiCert Global G2-rotcertifikatutfärdare
    • Microsoft RSA-rotcertifikatutfärdare 2017
  2. Konfigurera klienten så att den endast innehåller ECDSA-chiffersviter och exkludera eventuella RSA-paket. Det här är de chiffersviter som stöds för ECC-certifikatet:
    • 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
  3. Anslut klienten till IoT-hubben.

Förhandlingar om maximal fragmentlängd för TLS

IoT Hub har också stöd för förhandlingar om maximal fragmentlängd för TLS, vilket ibland kallas TLS-ramstorleksförhandling. Den här funktionen är en allmänt tillgänglig förhandsversion.

Använd den här funktionen om du vill ange den maximala fragmentlängden i klartext till ett värde som är mindre än standardvärdet 2^14 byte. När det har förhandlats börjar IoT Hub och klienten fragmentera meddelanden för att säkerställa att alla fragment är mindre än den förhandlade längden. Det här beteendet är användbart för beräkning eller minnesbegränsade enheter. Mer information finns i den officiella TLS-tilläggsspecifikationen.

Det officiella SDK-stödet för den här funktionen för offentlig förhandsversion är ännu inte tillgängligt. Så här kommer du igång

  1. Skapa en IoT Hub.
  2. När du använder OpenSSL anropar du SSL_CTX_set_tlsext_max_fragment_length för att ange fragmentstorleken.
  3. Anslut klienten till IoT Hub.

Fäst certifikat

Det rekommenderas starkt att fästa och filtrera TLS-servercertifikat och mellanliggande certifikat som är associerade med IoT Hub-slutpunkter eftersom Microsoft ofta rullar dessa certifikat med liten eller ingen förvarning. Om du måste kan du bara fästa rotcertifikaten enligt beskrivningen i det här Azure IoT-blogginlägget.

Nästa steg