Skapa och etablera en IoT Edge-enhet i Linux med X.509-certifikat

Gäller för:IoT Edge 1.4 checkmark IoT Edge 1.4

Viktigt!

IoT Edge 1.4 är den version som stöds. 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 registrering och etablering av en Linux IoT Edge-enhet, inklusive installation av IoT Edge.

Varje enhet som ansluter till en IoT-hubb har ett enhets-ID som används för att spåra kommunikation från moln till enhet eller från enhet till moln. Du konfigurerar en enhet med dess anslutningsinformation som innehåller IoT Hub-värdnamnet, enhets-ID:t och den information som enheten använder för att autentisera till IoT Hub.

Stegen i den här artikeln går igenom en process som kallas manuell etablering, där du ansluter en enda enhet till dess IoT-hubb. För manuell etablering har du två alternativ för att autentisera IoT Edge-enheter:

  • Symmetriska nycklar: När du skapar en ny enhetsidentitet i IoT Hub skapar tjänsten två nycklar. Du placerar en av nycklarna på enheten och den visar nyckeln till IoT Hub när du autentiserar.

    Den här autentiseringsmetoden går snabbare att komma igång, men inte lika säker.

  • X.509 självsignerade: Du skapar två X.509-identitetscertifikat och placerar dem på enheten. När du skapar en ny enhetsidentitet i IoT Hub anger du tumavtryck från båda certifikaten. När enheten autentiseras till IoT Hub visas ett certifikat och IoT Hub verifierar att certifikatet matchar tumavtrycket.

    Den här autentiseringsmetoden är säkrare och rekommenderas för produktionsscenarier.

Den här artikeln beskriver hur du använder X.509-certifikat som autentiseringsmetod. Om du vill använda symmetriska nycklar kan du läsa Skapa och etablera en IoT Edge-enhet i Linux med symmetriska nycklar.

Kommentar

Om du har många enheter att konfigurera och inte vill etablera var och en manuellt använder du någon av följande artiklar för att lära dig hur IoT Edge fungerar med IoT Hub-enhetsetableringstjänsten:

Förutsättningar

Den här artikeln beskriver hur du registrerar din IoT Edge-enhet och installerar IoT Edge på den. Dessa uppgifter har olika förutsättningar och verktyg som används för att utföra dem. Kontrollera att du har alla förutsättningar som omfattas innan du fortsätter.

Verktyg för enhetshantering

Du kan använda Azure-portalen, Visual Studio Code eller Azure CLI för stegen för att registrera din enhet. Varje verktyg har sina egna förutsättningar eller kan behöva installeras:

En kostnadsfri eller standard-IoT-hubb i din Azure-prenumeration.

Enhetskrav

En X64-, ARM32- eller ARM64 Linux-enhet.

Microsoft publicerar installationspaket för en mängd olika operativsystem.

Den senaste informationen om vilka operativsystem som för närvarande stöds för produktionsscenarier finns i System som stöds av Azure IoT Edge.

Generera enhetsidentitetscertifikat

Manuell etablering med X.509-certifikat kräver IoT Edge version 1.0.10 eller senare.

När du etablerar en IoT Edge-enhet med X.509-certifikat använder du det som kallas ett enhetsidentitetscertifikat. Det här certifikatet används endast för att etablera en IoT Edge-enhet och autentisera enheten med Azure IoT Hub. Det är ett lövcertifikat som inte signerar andra certifikat. Enhetsidentitetscertifikatet är separat från certifikatutfärdarens certifikat (CA) som IoT Edge-enheten presenterar för moduler eller underordnade enheter för verifiering.

För X.509-certifikatautentisering tillhandahålls varje enhets autentiseringsinformation i form av tumavtryck från enhetsidentitetscertifikaten. Dessa tumavtryck ges till IoT Hub vid tidpunkten för enhetsregistreringen så att tjänsten kan känna igen enheten när den ansluter.

Mer information om hur CA-certifikaten används i IoT Edge-enheter finns i Förstå hur Azure IoT Edge använder certifikat.

Du behöver följande filer för manuell etablering med X.509:

  • Två enhetsidentitetscertifikat med matchande privata nyckelcertifikat i .cer- eller .pem-format. Du behöver två enhetsidentitetscertifikat för certifikatrotation. Bästa praxis är att förbereda två olika enhetsidentitetscertifikat med olika förfallodatum. Om det ena certifikatet upphör att gälla är det andra fortfarande giltigt och ger dig tid att rotera det utgångna certifikatet.

    En uppsättning certifikat- och nyckelfiler tillhandahålls till IoT Edge-körningen. När du skapar enhetsidentitetscertifikat anger du certifikatets gemensamma namn (CN) med det enhets-ID som du vill att enheten ska ha i din IoT-hubb.

  • Tumavtryck som hämtats från båda enhetsidentitetscertifikaten. IoT Hub kräver två tumavtryck när du registrerar en IoT Edge-enhet. Du kan bara använda ett certifikat för registrering. Om du vill använda ett enda certifikat anger du samma tumavtryck för certifikatet för både de primära och sekundära tumavtrycken när du registrerar enheten.

    Tumavtrycksvärden är 40 hextecken för SHA-1-hashar eller 64-hextecken för SHA-256-hashar. Båda tumavtrycken tillhandahålls till IoT Hub vid tidpunkten för enhetsregistreringen.

    Ett sätt att hämta tumavtrycket från ett certifikat är med följande openssl-kommando:

    openssl x509 -in <certificate filename>.pem -text -fingerprint
    

    Tumavtrycket ingår i utdata från det här kommandot. Till exempel:

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

Om du inte har certifikat tillgängliga kan du skapa democertifikat för att testa IoT Edge-enhetsfunktioner. Följ anvisningarna i den artikeln för att konfigurera skript för att skapa certifikat, skapa ett rotcertifikatutfärdarcertifikat och skapa ett IoT Edge-enhetsidentitetscertifikat. För testning kan du skapa ett enhetsidentitetscertifikat och använda samma tumavtryck för både primära och sekundära tumavtrycksvärden när du registrerar enheten i IoT Hub.

Registrera din enhet

Du kan använda Azure-portalen, Visual Studio Code eller Azure CLI för att registrera din enhet, beroende på vad du föredrar.

I din IoT-hubb i Azure-portalen skapas och hanteras IoT Edge-enheter separat från IoT-enheter som inte är edge-aktiverade.

  1. Logga in på Azure-portalen och gå till din IoT-hubb.

  2. I den vänstra rutan väljer du Enheter på menyn och väljer sedan Lägg till enhet.

  3. På sidan Skapa en enhet anger du följande information:

    • Skapa ett beskrivande enhets-ID. Anteckna det här enhets-ID:t när du använder det senare.
    • Markera kryssrutan IoT Edge-enhet .
    • Välj X.509 Självsignerad som autentiseringstyp.
    • Ange tumavtrycken för primärt och sekundärt identitetscertifikat. Tumavtrycksvärden är 40 hextecken för SHA-1-hashar eller 64-hextecken för SHA-256-hashar. Azure-portalen stöder endast hexadecimala värden. Ta bort kolumnavgränsare och blanksteg från tumavtrycksvärdena innan du anger dem i portalen. Till exempel D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 anges som D268D9049F1A4D6AFD8477687BC633C032375112.

    Dricks

    Om du testar och vill använda ett certifikat kan du använda samma certifikat för både de primära och sekundära tumavtrycken.

  4. Välj Spara.

Nu när du har en enhet registrerad i IoT Hub hämtar du den information som du använder för att slutföra installationen och etableringen av IoT Edge-körningen.

Visa registrerade enheter och hämta etableringsinformation

Enheter som använder X.509-certifikatautentisering behöver sitt IoT-hubbnamn, sitt enhetsnamn och sina certifikatfiler för att slutföra installationen och etableringen av IoT Edge-körningen.

De gränsaktiverade enheter som ansluter till din IoT-hubb visas på sidan Enheter . Du kan filtrera listan efter IoT Edge-enheter av enhetstyp.

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.

Installationen kan utföras med några få kommandon. Öppna en terminal och kör följande kommandon:

  • 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 den enda containermotorn som officiellt stöds med IoT Edge. Docker CE/EE-containeravbildningar är kompatibla med Moby-körningen.

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.

  1. Skapa eller redigera den befintliga Docker-daemonens konfigurationsfil

    sudo nano /etc/docker/daemon.json
    
  2. Ange loggningsdrivrutinen som standard till local loggningsdrivrutinen enligt exemplet.

       {
          "log-driver": "local"
       }
    
  3. 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 defender-iot-micro-agent-edge
    

Det valfria defender-iot-micro-agent-edge paketet innehåller Microsoft Defender för IoT-säkerhetsmikroagenten som ger slutpunktssynlighet i hantering av säkerhetsstatus, sårbarheter, hotidentifiering, hantering av flottan med mera för att hjälpa dig att skydda dina IoT Edge-enheter. Vi rekommenderar att du installerar mikroagenten med Edge-agenten för att aktivera säkerhetsövervakning och härdning av dina Edge-enheter. Mer information om Microsoft Defender för IoT finns i Vad är Microsoft Defender för IoT för enhetsbyggare?

Etablera enheten med dess molnidentitet

Nu när containermotorn och IoT Edge-körningen är installerade på enheten är du redo att konfigurera enheten med dess molnidentitet och autentiseringsinformation.

  1. Skapa konfigurationsfilen 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
    
  2. Öppna konfigurationsfilen på IoT Edge-enheten.

    sudo nano /etc/aziot/config.toml
    
  3. Leta upp avsnittet Etablering i filen och ta bort kommentaren till raderna för manuell etablering med X.509-identitetscertifikatet. Se till att andra etableringsavsnitt kommenteras ut.

    # Manual provisioning with x.509 certificates
    [provisioning]
    source = "manual"
    iothub_hostname = "REQUIRED_IOTHUB_HOSTNAME"
    device_id = "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"
    
    [provisioning.authentication]
    method = "x509"
    
    identity_cert = "REQUIRED_URI_OR_POINTER_TO_DEVICE_IDENTITY_CERTIFICATE"
    
    identity_pk = "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"
    

Uppdatera följande fält:

  • iothub_hostname: Värdnamnet för den IoT Hub som enheten ansluter till. Exempel: {IoT hub name}.azure-devices.net
  • device_id: Det ID som du angav när du registrerade enheten.
  • identity_cert: URI till ett identitetscertifikat på enheten, till exempel: file:///path/identity_certificate.pem. Eller utfärda certifikatet dynamiskt med HJÄLP av EST eller en lokal certifikatutfärdare.
  • identity_pk: URI till den privata nyckelfilen för det angivna identitetscertifikatet, till exempel: file:///path/identity_key.pem. Eller ange en PKCS#11-URI och ange sedan din konfigurationsinformation i

PKCS#11-avsnitt senare i konfigurationsfilen.

Mer information om certifikat finns i Hantera IoT Edge-certifikat.

Spara och stäng filen.

CTRL + X, , YEnter

När du har angett etableringsinformationen i konfigurationsfilen tillämpar du dina ändringar:

sudo iotedge config apply

Distribuera moduler

Om du vill distribuera dina IoT Edge-moduler går du till din IoT-hubb i Azure-portalen och sedan:

  1. Välj Enheter på IoT Hub-menyn.

  2. Välj enheten för att öppna sidan.

  3. Välj fliken Ange moduler .

  4. Eftersom vi vill distribuera IoT Edge-standardmodulerna (edgeAgent och edgeHub) behöver vi inte lägga till några moduler i det här fönstret, så välj Granska + skapa längst ned.

  5. Du ser JSON-bekräftelsen för dina moduler. Välj Skapa för att distribuera modulerna.<

Mer information finns i Distribuera en modul.

Kontrollera att konfigurationen har slutförts

Verifiera att körningen har installerats och konfigurerats korrekt på din IoT Edge-enhet.

Dricks

Förhöjd behörighet krävs för att köra iotedge-kommandon. När du loggar ut från datorn och sedan loggar in igen för första gången efter installationen av IoT Edge-körningen, så uppdateras dina behörigheter automatiskt. Tills dess använder du sudo framför kommandona.

Kontrollera att IoT Edge-systemtjänsten körs.

sudo iotedge system status

Ett lyckat statussvar är Ok.

Hämta tjänstloggar om du behöver felsöka tjänsten.

sudo iotedge system logs

Använd verktyget check för att verifiera enhetens konfigurations- och anslutningsstatus.

sudo iotedge check

Du kan förvänta dig ett antal svar som kan innehålla OK (grön), Varning (gul) eller Fel (röd). Felsökning av vanliga fel finns i Lösningar på vanliga problem för Azure IoT Edge.

Screenshot of sample responses from the check command.

Dricks

Använd sudo alltid för att köra kontrollverktyget, även när dina behörigheter har uppdaterats. Verktyget behöver utökade privilegier för att få åtkomst till konfigurationsfilen för att verifiera konfigurationsstatusen.

Kommentar

På en nyligen etablerad enhet kan du se ett fel som rör IoT Edge Hub:

× produktionsberedskap: Edge Hubs lagringskatalog sparas i värdfilsystemet – Fel

Det gick inte att kontrollera det aktuella tillståndet för edgeHub-containern

Det här felet förväntas på en nyligen etablerad enhet eftersom IoT Edge Hub-modulen inte körs. Lös felet genom att ange modulerna för enheten i IoT Hub och skapa en distribution. När du skapar en distribution för enheten startas modulerna på enheten, inklusive IoT Edge Hub-modulen.

Visa alla moduler som körs på din IoT Edge-enhet. När tjänsten startar för första gången bör du bara se edgeAgent-modulen köras. EdgeAgent-modulen körs som standard och hjälper till att installera och starta eventuella ytterligare moduler som du distribuerar till enheten.

sudo iotedge list

När du skapar en ny IoT Edge-enhet visas statuskoden 417 -- The device's deployment configuration is not set i Azure-portalen. Den här statusen är normal och innebär att enheten är redo att ta emot en moduldistribution.

Offlineinstallation eller specifik version (valfritt)

Stegen i det här avsnittet gäller scenarier som inte omfattas av standardinstallationsstegen. Detta kan omfatta:

  • Installera IoT Edge när du är offline
  • Installera en versionskandidatversion

Följ stegen i det här avsnittet om du vill installera en specifik version av Azure IoT Edge-körningen som inte är tillgänglig via pakethanteraren. Microsoft-paketlistan innehåller bara en begränsad uppsättning senaste versioner och deras underversioner, så de här stegen är till för alla som vill installera en äldre version eller en versionskandidatversion.

Om du använder Ubuntu-snappar kan du ladda ned en snap och installera den offline. Mer information finns i Ladda ned snaps och installera offline.

Med curl-kommandon kan du rikta in dig på komponentfilerna direkt från IoT Edge GitHub-lagringsplatsen.

Kommentar

Om enheten för närvarande kör IoT Edge version 1.1 eller äldre avinstallerar du paketen iotedge och libiothsm-std innan du följer stegen i det här avsnittet. Mer information finns i Uppdatera från 1.0 eller 1.1 till den senaste versionen.

  1. Gå till Azure IoT Edge-versionerna och leta reda på den versionsversion som du vill rikta in dig på.

  2. Expandera avsnittet Tillgångar för den versionen.

  3. Varje version bör ha nya filer för IoT Edge och identitetstjänsten. Om du ska installera IoT Edge på en offlineenhet laddar du ned filerna i förväg. Annars använder du följande kommandon för att uppdatera dessa komponenter.

    1. Hitta filen aziot-identity-service som matchar IoT Edge-enhetens arkitektur. Högerklicka på fillänken och kopiera länkadressen.

    2. Använd den kopierade länken i följande kommando för att installera den versionen av identitetstjänsten:

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      

    1. Hitta filen aziot-edge som matchar IoT Edge-enhetens arkitektur. Högerklicka på fillänken och kopiera länkadressen.

    2. Använd den kopierade länken i följande kommando för att installera den versionen av IoT Edge.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

Avinstallera IoT Edge

Om du vill ta bort IoT Edge-installationen från enheten använder du följande kommandon.

Ta bort IoT Edge-körningen.

sudo apt-get autoremove --purge aziot-edge

--purge Utelämna flaggan om du planerar att installera om IoT Edge och använda samma konfigurationsinformation i framtiden. Flaggorna --purge tar bort alla filer som är associerade med IoT Edge, inklusive dina konfigurationsfiler.

När IoT Edge-körningen tas bort stoppas alla containrar som skapats men finns kvar på enheten. Visa alla containrar för att se vilka som finns kvar.

sudo docker ps -a

Ta bort containrarna från enheten, inklusive de två körningscontainrarna.

sudo docker rm -f <container name>

Ta slutligen bort containerkörningen från enheten.

sudo apt-get autoremove --purge moby-engine