Autentisera en underordnad enhet på Azure IoT Hub

Gäller för:Bockmarkering för IoT Edge 1.5 IoT Edge 1.5 Bockmarkering för IoT Edge 1.4 IoT Edge 1.4

Viktigt!

IoT Edge 1.5 LTS och IoT Edge 1.4 LTS stöds. IoT Edge 1.4 LTS upphör den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.

I ett transparent gatewayscenario behöver underordnade enheter (kallas ibland underordnade enheter) identiteter i IoT Hub som alla andra enheter. Den här artikeln går igenom alternativen för att autentisera en nedströmsenhet till IoT Hub och visar sedan hur du deklarerar gatewayanslutningen.

Kommentar

En nedströmsenhet genererar data direkt till Internet eller till gatewayenheter (IoT Edge-aktiverade eller inte). En underordnad enhet kan vara en underordnad enhet eller en gatewayenhet i en kapslad topologi.

Det finns tre allmänna steg för att konfigurera en lyckad transparent gatewayanslutning. Den här artikeln beskriver det andra steget:

  1. Konfigurera gatewayenheten som en server så att underordnade enheter kan ansluta till den på ett säkert sätt. Konfigurera gatewayen för att ta emot meddelanden från underordnade enheter och dirigera dem till rätt mål. De här stegen finns i Konfigurera en IoT Edge-enhet så att den fungerar som en transparent gateway.
  2. Skapa en enhetsidentitet för den underordnade enheten så att den kan autentiseras med IoT Hub. Konfigurera den underordnade enheten så att den skickar meddelanden via gatewayenheten.
  3. Anslut nedströmsenheten till gatewayenheten och börja skicka meddelanden. De här stegen finns i Anslut en nedströmsenhet till en Azure IoT Edge-gateway.

Underordnade enheter kan autentisera med IoT Hub med någon av tre metoder: symmetriska nycklar (kallas ibland delade åtkomstnycklar), självsignerade X.509-certifikat eller X.509-certifikatutfärdare (CA) signerade certifikat. Autentiseringsstegen liknar de steg som används för att konfigurera alla icke-IoT-Edge-enheter med IoT Hub, med små skillnader för att deklarera gatewayrelationen.

Automatisk etablering av underordnade enheter med Azure IoT Hub Device Provisioning Service (DPS) stöds inte.

Förutsättningar

Slutför stegen i Konfigurera en IoT Edge-enhet för att fungera som en transparent gateway.

Om du använder X.509-autentisering genererar du certifikat för din underordnade enhet. Ha samma rotcertifikatutfärdarcertifikat och certifikatet som genererade skriptet som du använde för den transparenta gatewayartikeln tillgänglig för användning igen.

Den här artikeln refererar till gatewayens värdnamn på flera punkter. Gateway-värdnamnet deklareras i parametern värdnamn för konfigurationsfilen på IoT Edge-gatewayenheten. Det refereras till i anslutningssträng för den underordnade enheten. Gateway-värdnamnet måste kunna matchas till en IP-adress, antingen med hjälp av DNS eller en värdfilpost på den underordnade enheten.

Registrera enhet med IoT Hub

Välj hur du vill att din underordnade enhet ska autentisera med IoT Hub:

  • Symmetrisk nyckelautentisering: IoT Hub skapar en nyckel som du lägger på den underordnade enheten. När enheten autentiseras kontrollerar IoT Hub att de två nycklarna matchar. Du behöver inte skapa ytterligare certifikat för att använda symmetrisk nyckelautentisering.

    Den här metoden går snabbare att komma igång om du testar gatewayer i ett utvecklings- eller testscenario.

  • Självsignerad X.509-autentisering: Kallas ibland tumavtrycksautentisering eftersom du delar tumavtrycket från enhetens X.509-certifikat med IoT Hub.

    Certifikatautentisering rekommenderas för enheter i produktionsscenarier.

  • X.509 CA-signerad autentisering: Ladda upp rotcertifikatutfärdarcertifikatet till IoT Hub. När enheter presenterar sitt X.509-certifikat för autentisering kontrollerar IoT Hub att det tillhör en förtroendekedja som har signerats av samma rotcertifikatutfärdarcertifikatutfärdare.

    Certifikatautentisering rekommenderas för enheter i produktionsscenarier.

Autentisering med symmetrisk nyckel

Symmetrisk nyckelautentisering eller autentisering med delad åtkomstnyckel är det enklaste sättet att autentisera med IoT Hub. Med symmetrisk nyckelautentisering associeras en base64-nyckel med ditt IoT-enhets-ID i IoT Hub. Du inkluderar den nyckeln i dina IoT-program så att enheten kan presentera den när den ansluter till IoT Hub.

Lägg till en ny IoT-enhet i din IoT-hubb med antingen Azure-portalen, Azure CLI eller IoT-tillägget för Visual Studio Code. Kom ihåg att underordnade enheter måste identifieras i IoT Hub som vanliga IoT-enheter, inte IoT Edge-enheter.

När du skapar den nya enhetsidentiteten anger du följande information:

  • Skapa ett ID för enheten.

  • Välj Symmetrisk nyckel som autentiseringstyp.

  • Välj Ange en överordnad enhet och välj den IoT Edge-gatewayenhet som den här underordnade enheten ska ansluta via. Du kan alltid ändra överordnad senare.

    Skärmbild av hur du skapar ett enhets-ID med symmetrisk nyckelauktorisering i Azure-portalen.

    Kommentar

    Att ange den överordnade enheten brukade vara ett valfritt steg för underordnade enheter som använder symmetrisk nyckelautentisering. Från och med IoT Edge version 1.1.0 måste dock alla underordnade enheter tilldelas till en överordnad enhet.

    Du kan konfigurera IoT Edge-hubben så att den återgår till det tidigare beteendet genom att ange miljövariabeln AuthenticationMode till värdet CloudAndScope.

Du kan också använda IoT-tillägget för Azure CLI för att slutföra samma åtgärd. I följande exempel används kommandot az iot hub device-identity för att skapa en ny IoT-enhet med symmetrisk nyckelautentisering och tilldela en överordnad enhet:

az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}

Dricks

Du kan lista enhetsegenskaper inklusive enhetsomfång med hjälp av az iot hub device-identity list --hub-name {iothub name}.

Hämta och ändra sedan anslutningssträng så att enheten kan ansluta via sin gateway.

Självsignerad X.509-autentisering

För självsignerad X.509-autentisering, som ibland kallas tumavtrycksautentisering, måste du skapa certifikat som ska installeras på din underordnade enhet. Dessa certifikat har ett tumavtryck i sig som du delar med IoT Hub för autentisering.

  1. Använd certifikatutfärdarcertifikatet och skapa två enhetscertifikat (primära och sekundära) för den underordnade enheten.

    Om du inte har någon certifikatutfärdare för att skapa X.509-certifikat kan du använda IoT Edge-democertifikatskripten för att skapa underordnade enhetscertifikat. Följ stegen för att skapa självsignerade certifikat. Använd samma rotcertifikatutfärdarcertifikat som genererade certifikaten för din gatewayenhet.

    Om du skapar egna certifikat kontrollerar du att enhetscertifikatets ämnesnamn är inställt på det enhets-ID som du använder när du registrerar IoT-enheten i Azure IoT Hub. Den här inställningen krävs för autentisering.

  2. Hämta SHA1-fingeravtrycket (kallas tumavtryck i IoT Hub-gränssnittet) från varje certifikat, vilket är en 40 hexadecimal teckensträng. Använd följande openssl-kommando för att visa certifikatet och hitta fingeravtrycket:

    • Windows:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
      
    • Linux:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
      

    Kör det här kommandot två gånger, en gång för det primära certifikatet och en gång för det sekundära certifikatet. Du anger fingeravtryck för båda certifikaten när du registrerar en ny IoT-enhet med självsignerade X.509-certifikat.

  3. Gå till din IoT-hubb i Azure-portalen och skapa en ny IoT-enhetsidentitet med följande värden:

    • Ange det enhets-ID som matchar ämnesnamnet för dina enhetscertifikat.
    • Välj X.509 Självsignerad som autentiseringstyp.
    • Klistra in de hexadecimala strängar som du kopierade från enhetens primära och sekundära certifikat.
    • Välj Ange en överordnad enhet och välj den IoT Edge-gatewayenhet som den här underordnade enheten ska ansluta via. Du kan alltid ändra överordnad senare.

    Skärmbild som visar hur du skapar ett enhets-ID med en självsignerad X.509-auktorisering i Azure-portalen.

  4. Kopiera både de primära och sekundära enhetscertifikaten och deras nycklar till valfri plats på den underordnade enheten. Flytta också en kopia av det delade rotcertifikatutfärdarcertifikatet som genererade både gatewayenhetscertifikatet och de underordnade enhetscertifikaten.

    Du refererar till dessa certifikatfiler i alla program på den nedströmsenhet som ansluter till IoT Hub. Du kan använda en tjänst som Azure Key Vault eller en funktion som Secure copy protocol för att flytta certifikatfilerna.

  5. Beroende på vilket språk du föredrar kan du granska exempel på hur X.509-certifikat kan refereras till i IoT-program:

Du kan också använda IoT-tillägget för Azure CLI för att slutföra samma åtgärd för att skapa enheter. I följande exempel används kommandot az iot hub device-identity för att skapa en ny IoT-enhet med självsignerad X.509-autentisering och tilldelar en överordnad enhet:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

Dricks

Du kan lista enhetsegenskaper inklusive enhetsomfång med hjälp av az iot hub device-identity list --hub-name {iothub name}.

Hämta och ändra sedan anslutningssträng så att enheten kan ansluta via sin gateway.

X.509 CA-signerad autentisering

För X.509-certifikatutfärdare (CA) signerad autentisering behöver du ett rotcertifikatutfärdarcertifikat som är registrerat i IoT Hub som du använder för att signera certifikat för din underordnade enhet. Alla enheter som använder ett certifikat som har problem med rotcertifikatutfärdarcertifikatet eller något av dess mellanliggande certifikat kommer att tillåtas att autentiseras.

Det här avsnittet baseras på självstudieserien för IoT Hub X.509-certifikat. Se Förstå public key cryptography och X.509 Public Key Infrastructure för introduktionen av den här serien.

  1. Använd certifikatutfärdarcertifikatet och skapa två enhetscertifikat (primära och sekundära) för den underordnade enheten.

    Om du inte har någon certifikatutfärdare för att skapa X.509-certifikat kan du använda IoT Edge-democertifikatskripten för att skapa underordnade enhetscertifikat. Följ stegen för att skapa CA-signerade certifikat. Använd samma rotcertifikatutfärdarcertifikat som genererade certifikaten för din gatewayenhet.

  2. Följ anvisningarna i avsnittet Demonstrera bevis på innehav i Konfigurera X.509-säkerhet i din Azure IoT-hubb. I det avsnittet utför du följande steg:

    1. Ladda upp ett rotcertifikatutfärdarcertifikat. Om du använder democertifikaten är <rotcertifikatutfärdare path>/certs/azure-iot-test-only.root.ca.cert.pem.

    2. Kontrollera att du äger rotcertifikatutfärdarcertifikatet.

  3. Följ anvisningarna i avsnittet Skapa en enhet i din IoT Hub i Konfigurera X.509-säkerhet i Azure IoT Hub. I det avsnittet utför du följande steg:

    1. Lägg till en ny enhet. Ange ett gemener för enhets-ID och välj autentiseringstypen X.509 CA Signerad.

    2. Ange en överordnad enhet. Välj Ange en överordnad enhet och välj den IoT Edge-gatewayenhet som ska tillhandahålla anslutningen till IoT Hub.

  4. Skapa en certifikatkedja för din underordnade enhet. Använd samma rotcertifikatutfärdarcertifikat som du laddade upp till IoT Hub för att skapa den här kedjan. Använd samma gemena enhets-ID som du gav till din enhetsidentitet i portalen.

  5. Kopiera enhetscertifikatet och nycklarna till valfri plats på den underordnade enheten. Flytta också en kopia av det delade rotcertifikatutfärdarcertifikatet som genererade både gatewayenhetscertifikatet och de underordnade enhetscertifikaten.

    Du refererar till dessa filer i alla program på den nedströmsenhet som ansluter till IoT Hub. Du kan använda en tjänst som Azure Key Vault eller en funktion som Secure copy protocol för att flytta certifikatfilerna.

  6. Beroende på vilket språk du föredrar kan du granska exempel på hur X.509-certifikat kan refereras till i IoT-program:

Du kan också använda IoT-tillägget för Azure CLI för att slutföra samma åtgärd för att skapa enheter. I följande exempel används kommandot az iot hub device-identity för att skapa en ny IoT-enhet med X.509 CA-signerad autentisering och tilldelar en överordnad enhet:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_ca

Dricks

Du kan lista enhetsegenskaper inklusive enhetsomfång med hjälp av az iot hub device-identity list --hub-name {iothub name}.

Hämta och ändra sedan anslutningssträng så att enheten kan ansluta via sin gateway.

Hämta och ändra anslutningssträng

När du har skapat en IoT-enhetsidentitet i portalen kan du hämta dess primära eller sekundära nycklar. En av dessa nycklar måste ingå i anslutningssträng som program använder för att kommunicera med IoT Hub. För symmetrisk nyckelautentisering tillhandahåller IoT Hub den fullständigt utformade anslutningssträng i enhetsinformationen för din bekvämlighet. Du måste lägga till extra information om gatewayenheten i anslutningssträng.

Anslut ionssträngar för underordnade enheter behöver följande komponenter:

  • Den IoT-hubb som enheten ansluter till: Hostname={iothub name}.azure-devices.net
  • Enhets-ID:t som registrerats med hubben: DeviceID={device ID}
  • Autentiseringsmetoden, oavsett om det är symmetrisk nyckel eller X.509-certifikat
    • Om du använder symmetrisk nyckelautentisering anger du antingen den primära eller sekundära nyckeln: SharedAccessKey={key}
    • Om du använder X.509-certifikatautentisering anger du en flagga: x509=true
  • Den gatewayenhet som enheten ansluter via. Ange värdnamnsvärdet från IoT Edge-gatewayenhetens konfigurationsfil:GatewayHostName={gateway hostname}

Tillsammans ser en fullständig anslutningssträng ut så här:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

Eller:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice

Tack vare den överordnade/underordnade relationen kan du förenkla anslutningssträng genom att anropa gatewayen direkt som anslutningsvärd. Till exempel:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

Du använder den här ändrade anslutningssträng i nästa artikel i den transparenta gatewayserien.

Nästa steg

Nu har du en IoT Edge-enhet registrerad med din IoT-hubb och konfigurerad som en transparent gateway. Du har också en nedströmsenhet registrerad med din IoT-hubb och pekar på dess gatewayenhet.

Därefter måste du konfigurera din underordnade enhet så att den litar på gatewayenheten och ansluter till den på ett säkert sätt. Fortsätt till nästa artikel i den transparenta gatewayserien Anslut en nedströmsenhet till en Azure IoT Edge-gateway.