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.

Note

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. Dessutom stöder IoT Hub inte längre svaga chiffersviter från och med den 31 augusti 2025. Endast rekommenderade starka chiffersviter stöds för både befintliga och nya IoT Hubs.

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.

Important

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.

För närvarande stöds TLS 1.2-tillämpning endast i offentliga molnregioner.

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.

Chiffersviter

Från och med den 31 augusti 2025 tillämpar IoT Hub användningen av rekommenderade starka chiffersviter för alla befintliga och nya IoT Hubs. Icke-rekommenderade (svaga) chiffersviter stöds inte efter det här datumet.

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

  • 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

Note

ECDSA-chiffersviter är endast tillgängliga i offentliga molnregioner.

Följande icke-rekommenderade chiffersviter tillåts på hubbar utan minTlsVersion:1.2 till 31 augusti 2025:

  • 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.

Note

När du använder ett ECDSA- eller ECDHE-chiffer måste klienten ange supported_groups tillägget i ClientHello med en giltig grupp. När du ansluter med ett klientcertifikat måste klienten inkludera den kurva som används i klientcertifikatet i tillägget supported_groups .

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.

Note

Du kan uppdatera din IoT Hub till TLS 1.2 i alla offentliga molnregioner.

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.

Note

För närvarande är den här funktionen endast tillgänglig i offentliga molnregioner.

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

  1. Gå till skapa-guiden för IoT Hub i Azure-portalen.

  2. Välj en region i listan över regioner som stöds.

  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. Anslut dina IoT-enheter till den här IoT-hubben.

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.

Note

Vid överbelastningsväxling fortsätter egenskapen för minTlsVersion din IoT Hub att gälla i den geo-kopplade regionen efter överbelastningsväxlingen.

Kontrollera TLS-versioner och chiffersviter för IoT Hub-enheter

Azure IoT Hub ger möjlighet att kontrollera TLS-versionen, chiffersviter och andra enhetsanslutningsmått för att övervaka säkerheten för IoT-enheter. Du kan antingen använda IoT Hub-mått eller diagnostikloggar för att spåra TLS-versionsanvändning och andra relaterade egenskaper som Chiffersviter.

Note

För närvarande är den här funktionen endast tillgänglig i offentliga molnregioner.

Kontrollera TLS-versioner och chiffersviter med hjälp av IoT Hub-mått

Om du vill verifiera att enhetstrafiken till IoT Hub använder TLSv1.2 och starka chiffersviter kan du kontrollera IoT Hubs mått. På så sätt kan du filtrera efter TLS-version eller chiffersvit och kontrollera antalet lyckade anslutningar.

  1. I Azure Portal går du till din IoT-hubb.

  2. På menyn till vänster under Övervakning väljer du Mått.

  3. Lägg till måttet Lyckade anslutningar.

    Skärmbild som visar hur du lägger till måttet Lyckade anslutningar.

  4. Filtrera efter TLS-version eller chiffersvit genom att välja knappen Lägg till filter och välja lämplig egenskap, TLS-version eller chiffersvit, operator, till exempel "=" och värde, till exempel TLSv1.2.

    Skärmbild som visar hur du filtrerar efter TLS-version eller Chiffersvit.

  5. När du har tillämpat filtret ser du summan av enheter med lyckade IoT Hub-anslutningar baserat på den filtrerade egenskapen och värdena.

Kontrollera TLS-versioner och chiffersviter med IoT Hub-diagnostikloggar

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 och chiffersviten 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. På menyn till vänster under Övervakning väljer du Diagnostikinställningar. Kontrollera att diagnostikinställningarna har "Anslutningar" markerat.

  3. På menyn till vänster 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
    
  5. Ett exempel på frågeresultatet ser ut så här:

    Diagram som visar frågan för enhetens TLS-version.

Note

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.

Language Versioner som stöder TLS 1.2 Documentation
C Märk 2019-12-11 eller senare Link
Python Version 2.0.0 eller senare Link
C# Version 1.21.4 eller senare Link
Java Version 1.19.0 eller senare Link
Node.js Version 1.12.2 eller senare Link

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.

Note

För närvarande är den här funktionen endast tillgänglig i offentliga molnregioner.

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.

Note

För närvarande är den här funktionen endast tillgänglig i offentliga molnregioner.

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