Konfigurera en IoT Edge-enhet till att fungera som en transparent gateway
Gäller för: IoT Edge 1.5 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:
- 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.
- 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.
- Anslut den underordnade enheten till gatewayenheten och börja skicka meddelanden. De här stegen finns i Ansluta 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 Edge CA-certifikatet
Alla IoT Edge-gatewayer behöver ett Edge CA-certifikat installerat på dem. IoT Edge-säkerhetsdaemonen använder Edge CA-certifikatet för att signera ett ca-certifikat för arbetsbelastning som 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.
Rotcertifikatutfärdarcertifikatet och Edge CA-certifikatet (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. Gateway Edge CA-certifikatet och de underordnade enhetscertifikaten måste samla upp till samma rotcertifikatutfärdarcertifikat.
Dricks
Processen för att installera rotcertifikatutfärdarcertifikatet och Edge CA-certifikatet på en IoT Edge-enhet beskrivs också mer detaljerat i Hantera certifikat på en IoT Edge-enhet.
Ha följande filer klara:
- Rotcertifikatutfärdarcertifikat
- Edge CA-certifikat
- 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:
- Starta genom att konfigurera skripten för att generera certifikat på enheten.
- Skapa ett rotcertifikatutfärdarcertifikat. I slutet av dessa instruktioner har du en rotcertifikatutfärdarcertifikatfil
<path>/certs/azure-iot-test-only.root.ca.cert.pem
. - Skapa Edge CA-certifikat. I slutet av dessa instruktioner har du ett Edge CA-certifikat
<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
Kontrollera att certifikatet uppfyller formatkraven.
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.
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.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
Ä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
Ö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-cmdletenConnect-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.Leta upp parametern
trust_bundle_cert
. Ta bort kommentaren till den här raden och ange fil-URI:n till rotcertifikatutfärdarcertifikatfilen på enheten.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: Edge CA-certifikat
- pk: privat nyckel för enhets-CA
Spara och stäng filen.
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:
Gå till din IoT-hubb på Azure Portal.
Gå till Enheter under menyn Enhetshantering och välj den IoT Edge-enhet som du vill använda som gateway.
Välj Ange moduler.
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.
Välj Nästa: Vägar.
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
- Namn:
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.
- Namn:
När din väg eller dina vägar har skapats väljer du Granska + skapa.
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.