Skapa och etablera IoT Edge-enheter i stor skala i Linux med X.509-certifikat
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 instruktioner från slutpunkt till slutpunkt för automatisk avetablering av en eller flera Linux IoT Edge-enheter med X.509-certifikat. Du kan automatiskt etablera Azure IoT Edge-enheter med Azure IoT Hub-enhetsetableringstjänsten (DPS). Om du inte känner till processen för automatisk avetablering läser du etableringsöversikten innan du fortsätter.
Uppgifterna är följande:
- Generera certifikat och nycklar.
- Skapa antingen en enskild registrering för en enskild enhet eller en gruppregistrering för en uppsättning enheter.
- Installera IoT Edge-körningen och registrera enheten med IoT Hub.
Att använda X.509-certifikat som en attesteringsmekanism är ett utmärkt sätt att skala produktionen och förenkla enhetsetablering. Vanligtvis ordnas X.509-certifikat i en betrodd certifikatkedja. Från och med ett självsignerat eller betrott rotcertifikat signerar varje certifikat i kedjan nästa lägre certifikat. Det här mönstret skapar en delegerad förtroendekedja från rotcertifikatet nedåt via varje mellanliggande certifikat till det sista underordnade enhetscertifikatet som är installerat på en enhet.
Dricks
Om enheten har en maskinvarusäkerhetsmodul (HSM), till exempel TPM 2.0, rekommenderar vi att du lagrar X.509-nycklarna på ett säkert sätt i HSM. Läs mer om hur du implementerar zero-touch-etableringen i stor skala som beskrivs i den här skissen med exemplet iotedge-tpm2cloud .
Förutsättningar
Molnresurser
- En aktiv IoT-hubb
- En instans av IoT Hub-enhetsetableringstjänsten i Azure, länkad till din IoT-hubb
- Om du inte har någon instans av enhetsetableringstjänsten kan du följa anvisningarna i snabbstarten Skapa en ny IoT Hub-enhetsetableringstjänst och Länka IoT-hubben och enhetsetableringstjänsten i snabbstarten för enhetsetableringstjänsten i IoT Hub.
- När du har kört enhetsetableringstjänsten kopierar du värdet för ID-omfånget från översiktssidan. Du använder det här värdet när du konfigurerar IoT Edge-körningen.
Enhetskrav
En fysisk eller virtuell Linux-enhet som ska vara IoT Edge-enheten.
Generera enhetsidentitetscertifikat
Enhetsidentitetscertifikatet är ett underordnat enhetscertifikat som ansluter via en certifikatkedja med förtroende till det översta certifikatutfärdarcertifikatet för X.509 (CA). Enhetsidentitetscertifikatet måste ha sitt gemensamma namn (CN) inställt på det enhets-ID som du vill att enheten ska ha i din IoT-hubb.
Enhetsidentitetscertifikat används endast för att etablera IoT Edge-enheten och autentisera enheten med Azure IoT Hub. De signerar inte certifikat, till skillnad från de CA-certifikat som IoT Edge-enheten presenterar för moduler eller underordnade enheter för verifiering. Mer information finns i Information om användning av Azure IoT Edge-certifikat.
När du har skapat enhetsidentitetscertifikatet bör du ha två filer: en .cer- eller .pem-fil som innehåller den offentliga delen av certifikatet och en .cer- eller .pem-fil med certifikatets privata nyckel. Om du planerar att använda gruppregistrering i DPS behöver du även den offentliga delen av ett mellanliggande certifikat eller rotcertifikatutfärdarcertifikat i samma förtroendekedja.
Du behöver följande filer för att konfigurera automatisk etablering med X.509:
- Enhetsidentitetscertifikatet och dess privata nyckelcertifikat. Enhetsidentitetscertifikatet laddas upp till DPS om du skapar en enskild registrering. Den privata nyckeln skickas till IoT Edge-körningen.
- Ett fullständigt kedjecertifikat som ska ha minst enhetsidentiteten och mellanliggande certifikat i det. Det fullständiga kedjecertifikatet skickas till IoT Edge-körningen.
- Ett mellanliggande certifikat eller rotcertifikatutfärdarcertifikat från certifikatkedjan för förtroende. Det här certifikatet laddas upp till DPS om du skapar en gruppregistrering.
Använda testcertifikat (valfritt)
Om du inte har någon certifikatutfärdare tillgänglig för att skapa nya identitetscertifikat och vill prova det här scenariot innehåller Azure IoT Edge git-lagringsplatsen skript som du kan använda för att generera testcertifikat. Dessa certifikat är endast utformade för utvecklingstestning och får inte användas i produktion.
Om du vill skapa testcertifikat följer du stegen i Skapa democertifikat för att testa IoT Edge-enhetsfunktioner. Slutför de två avsnitt som krävs för att konfigurera certifikatgenereringsskripten och skapa ett rotcertifikatutfärdarcertifikat. Följ sedan stegen för att skapa ett enhetsidentitetscertifikat. När du är klar bör du ha följande certifikatkedja och nyckelpar:
<WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
<WRKDIR>/private/iot-edge-device-identity-<name>.key.pem
Du behöver båda dessa certifikat på IoT Edge-enheten. Om du ska använda individuell registrering i DPS laddar du upp .cert.pem-filen. Om du ska använda gruppregistrering i DPS behöver du också ett mellanliggande certifikat eller rotcertifikatutfärdarcertifikat i samma certifikatkedja för att ladda upp. Om du använder democertifikat använder du certifikatet <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem
för gruppregistrering.
Skapa en DPS-registrering
Använd dina genererade certifikat och nycklar för att skapa en registrering i DPS för en eller flera IoT Edge-enheter.
Om du vill etablera en enda IoT Edge-enhet skapar du en enskild registrering. Om du behöver flera etablerade enheter följer du stegen för att skapa en DPS-gruppregistrering.
När du skapar en registrering i DPS har du möjlighet att deklarera ett initialt enhetstvillingtillstånd. I enhetstvillingen kan du ange taggar för att gruppera enheter efter mått som du behöver i din lösning, till exempel region, miljö, plats eller enhetstyp. Dessa taggar används för att skapa automatiska distributioner.
Mer information om registreringar i enhetsetableringstjänsten finns i Hantera enhetsregistreringar.
Skapa en individuell DPS-registrering
Enskilda registreringar tar den offentliga delen av en enhets identitetscertifikat och matchar det med certifikatet på enheten.
Dricks
Stegen i den här artikeln gäller för Azure Portal, men du kan också skapa enskilda registreringar med hjälp av Azure CLI. Mer information finns i az iot dps-registrering. Som en del av CLI-kommandot använder du flaggan edge-aktiverad för att ange att registreringen är för en IoT Edge-enhet.
I Azure Portal navigerar du till din instans av IoT Hub-enhetsetableringstjänsten.
Under Inställningar väljer du Hantera registreringar.
Välj Lägg till enskild registrering och slutför sedan följande steg för att konfigurera registreringen:
Mekanism: Välj X.509.
Primär certifikat .pem eller .cer fil: Ladda upp den offentliga filen från enhetsidentitetscertifikatet. Om du använde skripten för att generera ett testcertifikat väljer du följande fil:
<WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem
IoT Hub-enhets-ID: Ange ett ID för din enhet om du vill. Du kan använda enhets-ID:n för att rikta in dig på en enskild enhet för moduldistribution. Om du inte anger något enhets-ID används det gemensamma namnet (CN) i X.509-certifikatet.
IoT Edge-enhet: Välj Sant för att deklarera att registreringen gäller för en IoT Edge-enhet.
Välj de IoT-hubbar som den här enheten kan tilldelas till: Välj den länkade IoT-hubb som du vill ansluta enheten till. Du kan välja flera hubbar och enheten tilldelas till en av dem enligt den valda allokeringsprincipen.
Inledande enhetstvillingtillstånd: Lägg till ett taggvärde som ska läggas till i enhetstvillingen om du vill. Du kan använda taggar för att rikta in sig på grupper av enheter för automatisk distribution. Till exempel:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Välj Spara.
Under Hantera registreringar kan du se registrerings-ID :t för den registrering som du nyss skapade. Anteckna det eftersom det kan användas när du etablerar enheten.
Nu när det finns en registrering för den här enheten kan IoT Edge-körningen automatiskt etablera enheten under installationen.
Installera IoT Edge
I det här avsnittet förbereder du din virtuella Linux-dator eller fysiska enhet för IoT Edge. Sedan installerar du IoT Edge.
Kör följande kommandon för att lägga till paketlagringsplatsen och lägg sedan till Signeringsnyckeln för Microsoft-paketet i listan över betrodda nycklar.
Viktigt!
Den 30 juni 2022 drogs Raspberry Pi OS Stretch tillbaka från supportlistan för operativsystemet på nivå 1. För att undvika potentiella säkerhetsrisker uppdaterar du värdoperativsystemet till Bullseye.
För plattformsoperativsystem på nivå 2 görs installationspaket tillgängliga i Azure IoT Edge-versioner. Se installationsstegen i Offline eller specifik versionsinstallation.
Installationen kan utföras med några få kommandon. Öppna en terminal och kör följande kommandon:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Mer information om operativsystemversioner finns i Plattformar som stöds av Azure IoT Edge.
Kommentar
Azure IoT Edge-programvarupaket omfattas av licensvillkoren som finns i varje paket (usr/share/doc/{package-name}
eller LICENSE
katalogen). Läs licensvillkoren innan du använder ett paket. Din installation och användning av ett paket utgör ditt godkännande av dessa villkor. Om du inte godkänner licensvillkoren ska du inte använda det paketet.
Installera en containermotor
Azure IoT Edge förlitar sig på en OCI-kompatibel containerkörning. För produktionsscenarier rekommenderar vi att du använder Moby-motorn. Moby-motorn är containermotorn som stöds officiellt med IoT Edge. Docker CE/EE-containeravbildningar är kompatibla med Moby-körningen. Om du använder Ubuntu Core-snappar hanteras Docker-snapen av Canonical och stöds för produktionsscenarier.
Installera Moby-motorn.
sudo apt-get update; \
sudo apt-get install moby-engine
Som standard anger containermotorn inte storleksbegränsningar för containerloggar. Med tiden kan detta leda till att enheten fylls med loggar och att diskutrymmet börjar ta slut. Du kan dock konfigurera loggen så att den visas lokalt, även om den är valfri. Mer information om loggningskonfiguration finns i Checklista för produktionsdistribution.
Följande steg visar hur du konfigurerar containern så att den använder local
loggningsdrivrutinen som loggningsmekanism.
Skapa eller redigera den befintliga Docker-daemonens konfigurationsfil
sudo nano /etc/docker/daemon.json
Ange loggningsdrivrutinen som standard till
local
loggningsdrivrutinen enligt exemplet.{ "log-driver": "local" }
Starta om containermotorn för att ändringarna ska börja gälla.
sudo systemctl restart docker
Installera IoT Edge-körningen
IoT Edge-tjänsten tillhandahåller och upprätthåller säkerhetsstandarder på IoT Edge-enheten. Tjänsten startar vid varje start och startar enheten genom att starta resten av IoT Edge-körningen.
Kommentar
Från och med version 1.2 hanterar IoT-identitetstjänsten identitetsetablering och hantering för IoT Edge och för andra enhetskomponenter som behöver kommunicera med IoT Hub.
Stegen i det här avsnittet representerar den typiska processen för att installera den senaste IoT Edge-versionen på en enhet som har internetanslutning. Om du behöver installera en viss version, t.ex. en förhandsversion, eller om du behöver installera offline följer du installationsstegen offline eller specifik version senare i den här artikeln.
Dricks
Om du redan har en IoT Edge-enhet som kör en äldre version och vill uppgradera till den senaste versionen använder du stegen i Uppdatera IoT Edge-säkerhetsdaemonen och körningen. Senare versioner skiljer sig tillräckligt från tidigare versioner av IoT Edge för att specifika steg krävs för att uppgradera.
Installera den senaste versionen av IoT Edge och IoT-identitetstjänstpaketet (om du inte redan är uppdaterad):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
Etablera enheten med dess molnidentitet
När körningen har installerats på enheten konfigurerar du enheten med den information den använder för att ansluta till enhetsetableringstjänsten och IoT Hub.
Ha följande information klar:
- DPS-ID-omfångsvärdet. Du kan hämta det här värdet från översiktssidan för din DPS-instans i Azure Portal.
- Kedjefilen för enhetsidentitetscertifikat på enheten.
- Enhetens identitetsnyckelfil på enheten.
Skapa en konfigurationsfil för enheten baserat på en mallfil som tillhandahålls som en del av IoT Edge-installationen.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Öppna konfigurationsfilen på IoT Edge-enheten.
sudo nano /etc/aziot/config.toml
Leta reda på avsnittet Etablering i filen. Avkommentera raderna för DPS-etablering med X.509-certifikat och se till att andra etableringsrader kommenteras ut.
# DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "SCOPE_ID_HERE"
# Uncomment to send a custom payload during DPS registration
# payload = { uri = "PATH_TO_JSON_FILE" }
[provisioning.attestation]
method = "x509"
registration_id = "REGISTRATION_ID_HERE"
identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" # For example, "file:///var/aziot/device-id.pem"
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE" # For example, "file:///var/aziot/device-id.key"
# auto_reprovisioning_mode = Dynamic
Uppdatera värdet
id_scope
för med det omfångs-ID som du kopierade från din instans av DPS.Ange en
registration_id
för enheten, vilket är det ID som enheten har i IoT Hub. Registrerings-ID:t måste matcha det gemensamma namnet (CN) för identitetscertifikatet.Uppdatera värdena
identity_cert
för ochidentity_pk
med certifikatet och nyckelinformationen.Identitetscertifikatvärdet kan anges som en fil-URI eller kan utfärdas dynamiskt med HJÄLP av EST eller en lokal certifikatutfärdare. Avkommentar endast en rad, baserat på det format du väljer att använda.
Värdet för den privata identitetsnyckeln kan anges som en fil-URI eller en PKCS#11-URI. Avkommentar endast en rad, baserat på det format du väljer att använda.
Om du använder PKCS#11-URI:er hittar du avsnittet PKCS#11 i konfigurationsfilen och anger information om din PKCS#11-konfiguration.
Mer information om certifikat finns i Hantera IoT Edge-certifikat.
Mer information om konfigurationsinställningar för etablering finns i Konfigurera IoT Edge-enhetsinställningar.
Du kan också hitta avsnittet för automatisk ometableringsläge i filen. Använd parametern
auto_reprovisioning_mode
för att konfigurera enhetens återetableringsbeteende. Dynamisk – Återskapa när enheten upptäcker att den kan ha flyttats från en IoT Hub till en annan. Det här är standardinställningen. AlwaysOnStartup – Ometablering när enheten startas om eller en krasch gör att daemonerna startas om. OnErrorOnly – Utlös aldrig enhetens ometablering automatiskt. Varje läge har en implicit återställning av enhetsetablering om enheten inte kan ansluta till IoT Hub under identitetsetablering på grund av anslutningsfel. Mer information finns i Begrepp för ometablering av IoT Hub-enheter.Du kan också avkommentera parametern
payload
för att ange sökvägen till en lokal JSON-fil. Innehållet i filen skickas till DPS som ytterligare data när enheten registreras. Detta är användbart för anpassad allokering. Om du till exempel vill allokera dina enheter baserat på ett IoT Plug and Play-modell-ID utan mänsklig inblandning.Spara och stäng filen.
Tillämpa de konfigurationsändringar som du har gjort i IoT Edge.
sudo iotedge config apply
Kontrollera att installationen har slutförts
Om körningen har startats kan du gå till din IoT Hub och börja distribuera IoT Edge-moduler till enheten.
Du kan kontrollera att den enskilda registreringen som du skapade i enhetsetableringstjänsten användes. Gå till instansen av enhetsetableringstjänsten i Azure Portal. Öppna registreringsinformationen för den enskilda registrering som du skapade. Observera att statusen för registreringen har tilldelats och att enhets-ID:t visas.
Använd följande kommandon på enheten för att kontrollera att IoT Edge har installerats och startats.
Kontrollera status för IoT Edge-tjänsten.
sudo iotedge system status
Granska tjänstloggar.
sudo iotedge system logs
Visa en lista över moduler som körs.
sudo iotedge list
Nästa steg
Med registreringsprocessen för enhetsetableringstjänsten kan du ange taggar för enhets-ID och enhetstvilling samtidigt som du etablerar den nya enheten. Du kan använda dessa värden för att rikta in dig på enskilda enheter eller grupper av enheter med hjälp av automatisk enhetshantering. Lär dig hur du distribuerar och övervakar IoT Edge-moduler i stor skala med hjälp av Azure Portal eller med Hjälp av Azure CLI.