Konfigurera en IoT Edge-enhet till att fungera som en transparent gateway

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.

Den här artikeln innehåller detaljerade instruktioner för hur du konfigurerar en IoT Edge-enhet så att den fungerar som en transparent gateway för andra enheter att kommunicera med IoT Hub. Den här artikeln använder termen IoT Edge-gateway för att referera till en IoT Edge-enhet som konfigurerats som en transparent gateway. Mer information finns i Hur en IoT Edge-enhet kan användas som en gateway.

Kommentar

Underordnade enheter kan inte använda filuppladdning.

Det finns tre allmänna steg för att konfigurera en lyckad transparent gatewayanslutning. Den här artikeln beskriver det första 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.
  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. De här stegen finns i Autentisera en underordnad enhet till Azure IoT Hub.
  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.

För att en enhet ska fungera som en gateway måste den ansluta på ett säkert sätt till sina underordnade enheter. Med Azure IoT Edge kan du använda en offentlig nyckelinfrastruktur (PKI) för att konfigurera säkra anslutningar mellan enheter. I det här fallet tillåter vi att en nedströmsenhet ansluter till en IoT Edge-enhet som fungerar som en transparent gateway. För att upprätthålla rimlig säkerhet bör den underordnade enheten bekräfta gatewayenhetens identitet. Den här identitetskontrollen hindrar dina enheter från att ansluta till potentiellt skadliga gatewayer.

En underordnad enhet kan vara alla program eller plattformar som har en identitet som skapats med Azure IoT Hub-molntjänsten . Dessa program använder ofta Azure IoT-enhetens SDK. En nedströmsenhet kan till och med vara ett program som körs på själva IoT Edge-gatewayenheten.

Du kan skapa valfri certifikatinfrastruktur som möjliggör det förtroende som krävs för din enhetsgatewaytopologi. I den här artikeln förutsätter vi samma certifikatkonfiguration som du skulle använda för att aktivera X.509 CA-säkerhet i IoT Hub, vilket omfattar ett X.509 CA-certifikat som är kopplat till en specifik IoT-hubb (rotcertifikatutfärdare för IoT Hub), en serie certifikat som signerats med den här certifikatutfärdare och en certifikatutfärdare för IoT Edge-enheten.

Kommentar

Termen rotcertifikatutfärdarcertifikat som används i dessa artiklar refererar till det översta offentliga certifikatet för PKI-certifikatkedjan och inte nödvändigtvis certifikatroten för en syndikerad certifikatutfärdare. I många fall är det faktiskt ett mellanliggande certifikatutfärdarcertifikat.

Följande steg beskriver hur du skapar certifikaten och installerar dem på rätt platser på gatewayen. Du kan använda valfri dator för att generera certifikaten och sedan kopiera dem till din IoT Edge-enhet.

Förutsättningar

En Linux- eller Windows-enhet med IoT Edge installerat.

Om du inte har en enhet redo kan du skapa en på en virtuell Azure-dator. Följ stegen i Distribuera din första IoT Edge-modul till en virtuell Linux-enhet för att skapa en IoT Hub, skapa en virtuell dator och konfigurera IoT Edge-körningen.

Konfigurera certifikatet för enhetscertifikatutfärdare

Alla IoT Edge-gatewayer behöver ett certifikat för enhetscertifikatutfärdare installerat på dem. IoT Edge-säkerhetsdaemonen använder CA-certifikatet för IoT Edge-enheten för att signera ett ca-certifikat för arbetsbelastningar, vilket i sin tur signerar ett servercertifikat för IoT Edge-hubben. Gatewayen visar sitt servercertifikat till den underordnade enheten under initieringen av anslutningen. Den underordnade enheten kontrollerar att servercertifikatet ingår i en certifikatkedja som samlas in till rotcertifikatutfärdarcertifikatet. Med den här processen kan den underordnade enheten bekräfta att gatewayen kommer från en betrodd källa. Mer information finns i Förstå hur Azure IoT Edge använder certifikat.

Skärmbild som visar konfigurationen av gatewaycertifikatet.

Rotcertifikatutfärdarcertifikatet och certifikatet för enhetscertifikatutfärdare (med dess privata nyckel) måste finnas på IoT Edge-gatewayenheten och konfigureras i IoT Edge-konfigurationsfilen. Kom ihåg att rotcertifikatutfärdarcertifikatet i det här fallet innebär den översta certifikatutfärdare för det här IoT Edge-scenariot. Ca-certifikatet för gatewayenheten och de underordnade enhetscertifikaten måste sammanstullas till samma rotcertifikatutfärdarcertifikat.

Dricks

Processen för att installera rotcertifikatutfärdarcertifikatet och certifikatet för enhetscertifikatutfärdare på en IoT Edge-enhet förklaras också mer detaljerat i Hantera certifikat på en IoT Edge-enhet.

Ha följande filer klara:

  • Rotcertifikatutfärdarcertifikat
  • Certifikat för enhetscertifikatutfärdare
  • Privat nyckel för enhets-CA

För produktionsscenarier bör du generera dessa filer med din egen certifikatutfärdare. För utvecklings- och testscenarier kan du använda democertifikat.

Skapa democertifikat

Om du inte har en egen certifikatutfärdare och vill använda democertifikat följer du anvisningarna i Skapa democertifikat för att testa IoT Edge-enhetsfunktioner för att skapa dina filer. På den sidan måste du utföra följande steg:

  1. Starta genom att konfigurera skripten för att generera certifikat på enheten.
  2. Skapa ett rotcertifikatutfärdarcertifikat. I slutet av dessa instruktioner har du en rotcertifikatutfärdarcertifikatfil <path>/certs/azure-iot-test-only.root.ca.cert.pem.
  3. Skapa CA-certifikat för IoT Edge-enheter. I slutet av dessa instruktioner har du ett certifikat för enhetscertifikatutfärdare <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem med dess privata nyckel <path>/private/iot-edge-device-ca-<cert name>.key.pem.

Kopiera certifikat till enheten

  1. Kontrollera att certifikatet uppfyller formatkraven.

  2. Om du har skapat certifikaten på en annan dator kopierar du dem till din IoT Edge-enhet. Du kan använda en USB-enhet, en tjänst som Azure Key Vault eller med en funktion som Säker filkopia.

  3. Flytta filerna till önskad katalog för certifikat och nycklar. Använd /var/aziot/certs för certifikat och /var/aziot/secrets för nycklar.

  4. Skapa certifikat och nycklar kataloger och ange behörigheter. Du bör lagra dina certifikat och nycklar i önskad /var/aziot katalog. Använd /var/aziot/certs för certifikat och /var/aziot/secrets för nycklar.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
  5. Ändra ägarskap och behörigheter för certifikaten och nycklarna.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
     sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    

Konfigurera certifikat på enheten

  1. Öppna konfigurationsfilen på din IoT Edge-enhet: /etc/aziot/config.toml. Om du använder IoT Edge för Linux i Windows måste du ansluta till den virtuella EFLOW-datorn med hjälp av PowerShell-cmdleten Connect-EflowVm .

    Dricks

    Om konfigurationsfilen inte finns på enheten ännu använder /etc/aziot/config.toml.edge.template du den som mall för att skapa en.

  2. Leta upp parametern trust_bundle_cert . Ta bort kommentaren till den här raden och ange fil-URI:n till rotcertifikatutfärdarcertifikatfilen på enheten.

  3. Leta reda på [edge_ca] avsnittet i filen. Ta bort kommentaren till de tre raderna i det här avsnittet och ange fil-URI:er till certifikatet och nyckelfilerna som värden för följande egenskaper:

    • cert: certifikat för enhetscertifikatutfärdare
    • pk: privat nyckel för enhets-CA
  4. Spara och stäng filen.

  5. Tillämpa ändringarna.

    sudo iotedge config apply
    

Distribuera edgeHub och dirigera meddelanden

Underordnade enheter skickar telemetri och meddelanden till gatewayenheten, där IoT Edge-hubbmodulen ansvarar för att dirigera informationen till andra moduler eller till IoT Hub. Om du vill förbereda din gatewayenhet för den här funktionen kontrollerar du att:

  • IoT Edge-hubbmodulen distribueras till enheten.

    När du först installerar IoT Edge på en enhet startar bara en systemmodul automatiskt: IoT Edge-agenten. När du har skapat den första distributionen för en enhet startar även den andra systemmodulen och IoT Edge-hubben. Om edgeHub-modulen inte körs på enheten skapar du en distribution för enheten.

  • IoT Edge-hubbmodulen har vägar konfigurerade för att hantera inkommande meddelanden från underordnade enheter.

    Gateway-enheten måste ha en väg på plats för att hantera meddelanden från underordnade enheter, annars bearbetas inte dessa meddelanden. Du kan skicka meddelandena till moduler på gatewayenheten eller direkt till IoT Hub.

Följ dessa steg för att distribuera IoT Edge-hubbmodulen och konfigurera den med vägar för att hantera inkommande meddelanden från underordnade enheter:

  1. Gå till din IoT-hubb på Azure Portal.

  2. Gå till Enheter under menyn Enhetshantering och välj den IoT Edge-enhet som du vill använda som gateway.

  3. Välj Ange moduler.

  4. På sidan Moduler kan du lägga till alla moduler som du vill distribuera till gatewayenheten. I den här artikeln fokuserar vi på att konfigurera och distribuera edgeHub-modulen, som inte behöver anges uttryckligen på den här sidan.

  5. Välj Nästa: Vägar.

  6. På sidan Vägar kontrollerar du att det finns en väg för att hantera meddelanden som kommer från underordnade enheter. Till exempel:

    • En väg som skickar alla meddelanden, oavsett om det är från en modul eller från en nedströmsenhet, till IoT Hub:

      • Namn: allMessagesToHub
      • Värde: FROM /messages/* INTO $upstream
    • En väg som skickar alla meddelanden från alla underordnade enheter till IoT Hub:

      • Namn: allDownstreamToHub
      • Värde: FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

      Den här vägen fungerar eftersom meddelanden från underordnade enheter, till skillnad från meddelanden från IoT Edge-moduler, inte har något modul-ID associerat med dem. Med hjälp av WHERE-satsen för vägen kan vi filtrera bort alla meddelanden med den systemegenskapen.

      Mer information om meddelanderoutning finns i Distribuera moduler och upprätta vägar.

  7. När din väg eller dina vägar har skapats väljer du Granska + skapa.

  8. På sidan Granska + skapa väljer du Skapa.

Öppna portar på gatewayenheten

Standard-IoT Edge-enheter behöver ingen inkommande anslutning för att fungera, eftersom all kommunikation med IoT Hub sker via utgående anslutningar. Gateway-enheter skiljer sig eftersom de behöver ta emot meddelanden från sina underordnade enheter. Om en brandvägg finns mellan nedströmsenheterna och gatewayenheten måste kommunikationen också vara möjlig via brandväggen.

För att ett gatewayscenario ska fungera måste minst ett av IoT Edge Hubs protokoll som stöds vara öppet för inkommande trafik från underordnade enheter. Protokoll som stöds är MQTT, AMQP, HTTPS, MQTT över WebSockets och AMQP över WebSockets.

Port Protokoll
8883 MQTT
5671 AMQP
443 HTTPS
MQTT+WS
AMQP+WS

Nästa steg

Nu när du har konfigurerat en IoT Edge-enhet som en transparent gateway måste du konfigurera dina underordnade enheter för att lita på gatewayen och skicka meddelanden till den. Fortsätt vidare till Autentisera en nedströmsenhet till Azure IoT Hub för nästa steg när du konfigurerar ditt transparenta gatewayscenario.