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.

Anteckning

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örden 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.

Viktigt!

Det är viktigt att skilja mellan TLS 1.2-stöd och TLS 1.2-tillämpning. TLS 1.2 stöds på alla IoT Hubs, vilket innebär att IoT Hubs kan hantera anslutningar med hjälp av TLS 1.2-protokollet. Å andra sidan säkerställer TLS 1.2-tillämpning att IoT Hub endast accepterar anslutningar med TLS 1.2 eller senare. När TLS 1.2-tillämpning är aktiverat framtvingar tjänsten även användning av starka chiffersviter enligt beskrivningen ovan. Framtida uppdateringar möjliggör tillämpning av TLS 1.2 samtidigt som icke-rekommenderade chiffersviter tillåts.

För närvarande stöds TLS 1.2 endast i utvalda regioner:

  • Östra USA
  • Sydcentrala USA
  • Västra USA 2
  • USA:s regering, Arizona
  • US Gov Virginia (Obs! TLS 1.0/1.1-stöd är inte tillgängligt i den här regionen. TLS 1.2-tvingande måste vara aktiverat, annars misslyckas IoT Hub-skapandet).

Information om vilken version av TLS som IoT Hub-enheterna kör finns i TLS 1.0 och 1.1 guide för upphörande av support.

Ö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 enheten är det tillåtet. 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 Autentisera identiteter med X.509-certifikat.

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 rot-CA:er.

  • DigiCert Global G2 rotcertifikat (root certifikatutfärdare)
  • Microsoft RSA-root CA 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 root-CA komprometteras och en akut migrering av root-CA krävs.

Kryptografiska sviter

För att följa Azures säkerhetsprincip för en säker anslutning rekommenderar IoT Hub följande RSA- och ECDSA-chiffersviter som kräver minsta TLS 1.2-tillämpning:

  • 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. Dessa chiffersviter fungerar med TLS-versionerna 1.0, 1.1 och 1.2.

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_CBC_SHA

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

Uppdatera IoT Hub till TLS 1.2-stöd

När en IoT Hub har skapats minTlsVersion kan egenskapen uppdateras med hjälp av Azure-portalen, CLI eller SDK:er. Om du behöver uppdatera för att framtvinga att IoT Hub använder TLS 1.2 och starka chiffersviter (tillåts endast i valda regioner) eller för att ange TLS 1.2-stöd (stöds i alla regioner) kan du göra det genom att följa dessa steg.

Så här uppdaterar du IoT Hub för att stödja TLS 1.2 och/eller framtvinga starka chiffersviter i Azure-portalen:

  1. Gå till din befintliga IoT Hub i Azure-portalen.

  2. På fliken Översikt i den vänstra menyn klickar du på länken Lägsta TLS-version från avsnittet Essentials.

    Skärmbild som visar hur du väljer TLS-stöd för lägsta version.

  3. I fönstret Lägsta TLS-version väljer du 1.2 för att säkerställa att endast enheter som stöder TLS 1.2 eller senare kan ansluta.

  4. Klicka på Uppdatera.

    Skärmbild som visar hur du aktiverar TLS 1.2-stöd.

Anteckning

Du kan uppdatera din IoT Hub till TLS 1.2 i ALLA offentliga regioner. Om du däremot uppdaterar en IoT Hub i en av de valda regionerna (East US, South Central US, West US 2, US Gov Arizona och US Gov Virginia), kommer starkare chiffersviter att tas i bruk.

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

För att säkerställa att dina IoT-enheter uppfyller TLS 1.2-kraven och har starka chiffersviter, kan du tvinga fram att uppfylla kraven genom funktionen för minimal TLS-tillämpning 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):

  • Östra USA
  • Sydcentrala USA
  • Västra USA 2
  • USA:s regering, 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. Börja med att använda skapa-guiden i Azure-portalen för IoT Hub

  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. Välj 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.

Anteckning

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 Märk 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
Node.js 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 har förtroende för följande rotcertifikatutfärdare:
    • DigiCert Global G2 rotcertifikat (root certifikatutfärdare)
    • Microsoft RSA-root CA 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 avråds starkt från certifikatspinning och filtrering av TLS-servercertifikat och mellanliggande certifikat som är associerade med IoT Hub-slutpunkter eftersom Microsoft ofta byter ut dessa certifikat med liten eller ingen förvarning. Om du måste, fäst då endast rotcertifikaten enligt beskrivningen i det här Azure IoT-blogginlägget.

Nästa steg