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

Gäller för:  Ja-ikonen IoT Edge 1,1 andra versioner: IoT Edge 1,2

Gäller för:  Ja-ikonen IoT Edge 1,2 andra versioner: IoT Edge 1,1

Den här artikeln innehåller detaljerade anvisningar för att konfigurera en IoT Edge-enhet så att den fungerar som en transparent gateway för andra enheter för att kommunicera IoT Hub. I den här artikeln används 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.

Anteckning

I IoT Edge version 1.1 och senare kan en IoT Edge enhet inte vara underordnad en IoT Edge gateway.

Nedströmsenheter kan inte använda filuppladdning.

Anteckning

Nedströmsenheter 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 nedströmsenheter kan ansluta till den på ett säkert sätt. Konfigurera gatewayen för att ta emot meddelanden från nedströmsenheter och dirigera dem till rätt mål.
  2. Skapa en enhetsidentitet för nedströmsenheten så att den kan autentisera med IoT Hub. Konfigurera nedströmsenheten så att den skickar meddelanden via gatewayenheten. Dessa steg finns i Autentisera en nedströmsenhet för att Azure IoT Hub.
  3. Anslut nedströmsenheten till gatewayenheten och börja skicka meddelanden. Dessa steg finns i Anslut nedströmsenhet till en Azure IoT Edge gateway.

För att en enhet ska fungera som en gateway måste den på ett säkert sätt ansluta till dess underordnade enheter. Azure IoT Edge kan du använda en PKI (Public Key Infrastructure) för att konfigurera säkra anslutningar mellan enheter. I det här fallet tillåter vi att en underordnad enhet ansluter till en IoT Edge som fungerar som en transparent gateway. För att upprätthålla rimlig säkerhet bör nedströmsenheten bekräfta gatewayenhetens identitet. Den här identitetskontrollen förhindrar att dina enheter ansluter till potentiellt skadliga gatewayer.

En underordnad enhet kan vara ett program eller en plattform som har en identitet som skapats med Azure IoT Hub molntjänst. Dessa program använder ofta SDK för Azure IoT-enheter. En underordnad enhet kan till och med vara ett program som körs IoT Edge själva gatewayenheten. En enhet kan IoT Edge nedströms till en IoT Edge gateway.

En underordnad enhet kan vara ett program eller en plattform som har en identitet som skapats med Azure IoT Hub molntjänst. Dessa program använder ofta SDK för Azure IoT-enheter. En underordnad enhet kan till och med vara ett program som körs IoT Edge själva gatewayenheten.

Du kan skapa alla certifikatinfrastrukturer som möjliggör det förtroende som krävs för topologin för din enhetsgateway. I den här artikeln förutsätter vi att du har samma certifikatkonfiguration som du använder för att aktivera X.509 CA-säkerhet i IoT Hub, vilket omfattar ett X.509 CA-certifikat som är associerat med en specifik IoT-hubb (rotcertifikatutfärdaren för IoT-hubb), en serie certifikat som signerats med den här certifikatutfärdaren och en certifikatutfärdare för IoT Edge-enheten.

Anteckning

Termen rotcertifikatutfärdarcertifikat som används i de här artiklarna avser den högsta offentliga certifikatutfärdaren i PKI-certifikatkedjan och inte nödvändigtvis certifikatroten för en certifikatutfärdare. I många fall är det i själva verket ett mellanliggande offentligt CA-certifikat.

Följande steg går igenom processen för att skapa certifikaten och installera 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- Windows enhet med IoT Edge installerat.

Om du inte har en enhet klar 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 runtime.

Konfigurera ca-certifikatet för enheten

Alla IoT Edge gatewayer måste ha ett ca-enhetscertifikat installerat på dem. Den IoT Edge säkerhetsdaemonen använder ca IoT Edge enhetens CA-certifikat för att signera ett CA-certifikat för arbetsbelastningar, som i sin tur signerar ett servercertifikat för IoT Edge hub. Gatewayen presenterar sitt servercertifikat för den underordnade enheten när anslutningen påbörjas. Den underordnade enheten kontrollerar att servercertifikatet är en del av en certifikatkedja som ingår i rotcertifikatutfärdarcertifikatet. Den här processen gör att nedströmsenheten kan bekräfta att gatewayen kommer från en betrodd källa. Mer information finns i Förstå hur Azure IoT Edge använder certifikat.

Konfiguration av gatewaycertifikat

Rotcertifikatutfärdarcertifikatet och enhetens CA-certifikat (med dess privata nyckel) måste finnas på IoT Edge-gatewayenheten och konfigureras i IoT Edge konfigurationsfilen. Kom ihåg att i det här fallet innebär rotcertifikatutfärdarcertifikat den översta certifikatutfärdaren för det IoT Edge scenariot. Gatewayenhetens CA-certifikat och nedströmsenhetscertifikaten måste samla samma rotcertifikatutfärdarcertifikat.

Tips

Processen för att installera rotcertifikatutfärdarcertifikatet och enhetscertifikatutfärdarcertifikatet på en IoT Edge enhet beskrivs också i detalj i Hantera certifikat på en IoT Edge enhet.

Ha följande filer redo:

  • Rotcertifikatutfärdarcertifikat
  • Ca-certifikat för enhet
  • Privat nyckel för enhets-CA

I produktionsscenarier bör du generera dessa filer med din egen certifikatutfärdare. För utvecklings- och testscenarier kan du använda 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 för att skapa filer. På den sidan måste du göra följande:

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

Om du har skapat certifikaten på en annan dator kopierar du dem till IoT Edge enhet och fortsätter sedan med nästa steg.

  1. På din IoT Edge enhet öppnar du konfigurationsfilen för säkerhetsdaemon.

    • Windows: C:\ProgramData\iotedge\config.yaml
    • Linux: /etc/iotedge/config.yaml
  2. Leta upp avsnittet Certifikatinställningar i filen. Avkommenteringen av de fyra raderna som börjar med certifikat: och ange fil-URI:er till dina tre filer som värden för följande egenskaper:

    • device_ca_cert: ca-certifikat för enhet
    • device_ca_pk: privat nyckel för enhets-CA
    • trusted_ca_certs: certifikat från rotcertifikatutfärdaren

    Kontrollera att det inte finns något föregående blanksteg på certifikatraden och att de andra raderna är indragna med två blanksteg.

  3. Spara och stäng filen.

  4. Starta IoT Edge.

    • Windows: Restart-Service iotedge
    • Linux: sudo systemctl restart iotedge
  1. På IoT Edge enhet öppnar du konfigurationsfilen: /etc/aziot/config.toml

    Tips

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

  2. Hitta trust_bundle_cert parametern . Avkommenteringen av den här raden och ange fil-URI:t till certifikatfilen för rotcertifikatutfärdaren på enheten.

  3. Leta upp [edge_ca] avsnittet i filen. Avkommenteringen av de tre raderna i det här avsnittet och ange fil-URI:er till ditt certifikat och nyckelfiler som värden för följande egenskaper:

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

  5. Spara ändringarna.

    sudo iotedge config apply
    

Distribuera edgeHub och dirigera meddelanden

Nedströmsenheter skickar telemetri och meddelanden till gatewayenheten, där IoT Edge Hub-modulen ansvarar för att dirigera informationen till andra moduler eller till IoT Hub. Förbered gatewayenheten för den här funktionen genom att se till att:

  • Den IoT Edge hubbmodulen distribueras till enheten.

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

  • Hubbmodulen IoT Edge har vägar konfigurerade för att hantera inkommande meddelanden från nedströmsenheter.

    Gatewayenheten måste ha en väg på plats för att hantera meddelanden från nedströmsenheter, annars bearbetas inte dessa meddelanden. Du kan skicka meddelanden till moduler på gatewayenheten eller direkt till IoT Hub.

Följ dessa steg IoT Edge du distribuerar hubbmodulen och konfigurerar den med vägar för att hantera inkommande meddelanden från nedströmsenheter:

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

  2. Gå till IoT Edge 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 nedströmsenheter. Exempel:

    • En väg som skickar alla meddelanden, antingen från en modul eller från en underordnad enhet, till IoT Hub:

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

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

      Den här vägen fungerar eftersom, till skillnad från meddelanden IoT Edge moduler, meddelanden från nedströmsenheter inte har något modul-ID associerat med dem. Med hjälp av WHERE-satsen i 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å gatewayenhet

Standard IoT Edge-enheter behöver ingen inkommande anslutning för att fungera, eftersom all kommunikation med IoT Hub sker via utgående anslutningar. Gatewayenheter 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-hubbens protokoll som stöds vara öppet för inkommande trafik från nedströmsenheter. Protokollen som stöds är MQTT, AMQP, HTTPS, MQTT över WebSockets och AMQP via WebSockets.

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

Nästa steg

Nu när du har IoT Edge en enhet som konfigurerats som en transparent gateway måste du konfigurera nedströmsenheterna så att de litar på gatewayen och skickar meddelanden till den. Fortsätt till Autentisera en underordnad enhet för att Azure IoT Hub för nästa steg i att konfigurera scenariot med din transparenta gateway.