Een IoT Edge-apparaat in Linux maken en inrichten met X.509-certificaten

Van toepassing op:IoT Edge 1.4 checkmark IoT Edge 1.4

Belangrijk

IoT Edge 1.4 is de ondersteunde release. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

Dit artikel bevat end-to-end instructies voor het registreren en inrichten van een Linux IoT Edge-apparaat, waaronder het installeren van IoT Edge.

Elk apparaat dat verbinding maakt met een IoT-hub heeft een apparaat-id die wordt gebruikt om cloud-naar-apparaat- of apparaat-naar-cloud-communicatie bij te houden. U configureert een apparaat met de bijbehorende verbindingsgegevens die de hostnaam van de IoT-hub, de apparaat-id en de informatie die het apparaat gebruikt voor verificatie bij IoT Hub.

De stappen in dit artikel doorlopen een proces met de naam handmatig inrichten, waarbij u één apparaat verbindt met de IoT-hub. Voor handmatige inrichting hebt u twee opties voor het verifiëren van IoT Edge-apparaten:

  • Symmetrische sleutels: wanneer u een nieuwe apparaat-id in IoT Hub maakt, worden er twee sleutels gemaakt. U plaatst een van de sleutels op het apparaat en geeft de sleutel aan IoT Hub weer bij het verifiëren.

    Deze verificatiemethode is sneller om aan de slag te gaan, maar niet zo veilig.

  • X.509 zelfondertekend: u maakt twee X.509-identiteitscertificaten en plaatst deze op het apparaat. Wanneer u een nieuwe apparaat-id in IoT Hub maakt, geeft u vingerafdruk van beide certificaten op. Wanneer het apparaat wordt geverifieerd bij IoT Hub, geeft het één certificaat weer en controleert IoT Hub of het certificaat overeenkomt met de vingerafdruk.

    Deze verificatiemethode is veiliger en wordt aanbevolen voor productiescenario's.

In dit artikel wordt beschreven hoe u X.509-certificaten gebruikt als verificatiemethode. Als u symmetrische sleutels wilt gebruiken, raadpleegt u Een IoT Edge-apparaat maken en inrichten in Linux met behulp van symmetrische sleutels.

Notitie

Als u veel apparaten moet instellen en niet elk apparaat handmatig wilt inrichten, gebruikt u een van de volgende artikelen om te leren hoe IoT Edge werkt met de IoT Hub-apparaatinrichtingsservice:

Vereisten

In dit artikel wordt beschreven hoe u uw IoT Edge-apparaat registreert en IoT Edge erop installeert. Deze taken hebben verschillende vereisten en hulpprogramma's die worden gebruikt om ze te bereiken. Zorg ervoor dat aan alle vereisten wordt voldaan voordat u doorgaat.

Hulpprogramma’s voor apparaatbeheer

U kunt Azure Portal, Visual Studio Code of Azure CLI gebruiken om uw apparaat te registreren. Elk hulpprogramma heeft zijn eigen vereisten of moet mogelijk worden geïnstalleerd:

Een gratis of standaard IoT-hub in uw Azure-abonnement.

Vereisten voor apparaten

Een X64-, ARM32- of ARM64 Linux-apparaat.

Microsoft publiceert installatiepakketten voor verschillende besturingssystemen.

Zie ondersteunde Systemen van Azure IoT Edge voor de meest recente informatie over welke besturingssystemen momenteel worden ondersteund voor productiescenario's.

Apparaat-id-certificaten genereren

Voor handmatig inrichten met X.509-certificaten is IoT Edge versie 1.0.10 of hoger vereist.

Wanneer u een IoT Edge-apparaat inricht met X.509-certificaten, gebruikt u een apparaatidentiteitscertificaat. Dit certificaat wordt alleen gebruikt voor het inrichten van een IoT Edge-apparaat en het verifiëren van het apparaat met Azure IoT Hub. Het is een bladcertificaat dat geen andere certificaten ondertekent. Het certificaat voor apparaat-id's staat los van de certificaten van de certificeringsinstantie (CA) die het IoT Edge-apparaat presenteert aan modules of downstreamapparaten voor verificatie.

Voor X.509-certificaatverificatie worden de verificatiegegevens van elk apparaat opgegeven in de vorm van vingerafdrukken die afkomstig zijn van uw apparaat-id-certificaten. Deze vingerafdrukken worden aan IoT Hub gegeven op het moment van apparaatregistratie, zodat de service het apparaat kan herkennen wanneer het verbinding maakt.

Zie Begrijpen hoe Azure IoT Edge certificaten gebruikt voor certificaten voor meer informatie over hoe de CA-certificaten worden gebruikt op IoT Edge-apparaten.

U hebt de volgende bestanden nodig voor handmatige inrichting met X.509:

  • Twee apparaatidentiteitscertificaten met hun overeenkomende persoonlijke-sleutelcertificaten in .cer- of PEM-indelingen. U hebt twee apparaat-id-certificaten nodig voor certificaatrotatie. Een best practice is om twee verschillende apparaatidentiteitscertificaten met verschillende vervaldatums voor te bereiden. Als het ene certificaat verloopt, is het andere nog geldig en krijgt u tijd om het verlopen certificaat te draaien.

    Er wordt één set certificaat- en sleutelbestanden geleverd aan de IoT Edge-runtime. Wanneer u apparaat-id-certificaten maakt, stelt u de algemene naam van het certificaat (CN) in met de apparaat-id die het apparaat in uw IoT-hub moet hebben.

  • Vingerafdrukken die afkomstig zijn van beide apparaat-id-certificaten. Voor IoT Hub zijn twee vingerafdrukken vereist bij het registreren van een IoT Edge-apparaat. U kunt slechts één certificaat gebruiken voor registratie. Als u één certificaat wilt gebruiken, stelt u dezelfde vingerafdruk van het certificaat in voor zowel de primaire als de secundaire vingerafdruk bij het registreren van het apparaat.

    Vingerafdrukwaarden zijn 40-hex tekens voor SHA-1 hashes of 64-hex tekens voor SHA-256 hashes. Beide vingerafdrukken worden op het moment van apparaatregistratie aan IoT Hub verstrekt.

    Een manier om de vingerafdruk op te halen uit een certificaat is met de volgende openssl-opdracht:

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

    De vingerafdruk wordt opgenomen in de uitvoer van deze opdracht. Voorbeeld:

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

Als u geen certificaten beschikbaar hebt, kunt u democertificaten maken om ioT Edge-apparaatfuncties te testen. Volg de instructies in dat artikel voor het instellen van scripts voor het maken van certificaten, het maken van een basis-CA-certificaat en het maken van een IoT Edge-apparaat-id-certificaat. Voor het testen kunt u één apparaat-id-certificaat maken en dezelfde vingerafdruk gebruiken voor zowel primaire als secundaire vingerafdrukwaarden bij het registreren van het apparaat in IoT Hub.

Uw apparaat registreren

U kunt Azure Portal, Visual Studio Code of Azure CLI gebruiken om uw apparaat te registreren, afhankelijk van uw voorkeur.

In uw IoT-hub in Azure Portal worden IoT Edge-apparaten afzonderlijk gemaakt en beheerd van IoT-apparaten waarvoor geen edge is ingeschakeld.

  1. Meld u aan bij de Azure-portal en ga naar uw IoT Hub.

  2. Selecteer Apparaten in het menu in het linkerdeelvenster en selecteer Vervolgens Apparaat toevoegen.

  3. Geef op de pagina Een apparaat maken de volgende informatie op:

    • Maak een beschrijvende apparaat-id. Noteer deze apparaat-id, omdat u deze later gebruikt.
    • Schakel het selectievakje IoT Edge-apparaat in.
    • Selecteer X.509 Zelfondertekend als verificatietype.
    • Geef de vingerafdruk van het primaire en secundaire identiteitscertificaat op. Vingerafdrukwaarden zijn 40-hex tekens voor SHA-1 hashes of 64-hex tekens voor SHA-256 hashes. Azure Portal ondersteunt alleen hexadecimale waarden. Verwijder kolomscheidingstekens en spaties uit de vingerafdrukwaarden voordat u deze invoert in de portal. Wordt bijvoorbeeld D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 ingevoerd als D268D9049F1A4D6AFD8477687BC633C032375112.

    Tip

    Als u test en één certificaat wilt gebruiken, kunt u hetzelfde certificaat gebruiken voor zowel de primaire als de secundaire vingerafdruk.

  4. Selecteer Opslaan.

Nu u een apparaat hebt geregistreerd in IoT Hub, haalt u de informatie op die u gebruikt om de installatie en inrichting van de IoT Edge-runtime te voltooien.

Geregistreerde apparaten weergeven en inrichtingsgegevens ophalen

Apparaten die X.509-certificaatverificatie gebruiken, hebben hun IoT Hub-naam, hun apparaatnaam en hun certificaatbestanden nodig om de installatie en inrichting van de IoT Edge-runtime te voltooien.

De edge-apparaten die verbinding maken met uw IoT-hub, worden weergegeven op de pagina Apparaten . U kunt de lijst filteren op ioT Edge-apparaten van het apparaattype.

IoT Edge installeren

In deze sectie bereidt u uw virtuele Linux-machine of fysiek apparaat voor op IoT Edge. Vervolgens installeert u IoT Edge.

Voer de volgende opdrachten uit om de pakketopslagplaats toe te voegen en voeg vervolgens de ondertekeningssleutel van het Microsoft-pakket toe aan uw lijst met vertrouwde sleutels.

Belangrijk

Op 30 juni 2022 werd Raspberry Pi OS Stretch buiten gebruik gesteld van de ondersteuningslijst van het laag 1-besturingssysteem. Om potentiële beveiligingsproblemen te voorkomen, werkt u uw hostbesturingssysteem bij naar Bullseye.

Installatie kan worden uitgevoerd met een paar opdrachten. Open een terminal en voer de volgende opdrachten uit:

  • 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
    

Zie ondersteunde platformen van Azure IoT Edge voor meer informatie over besturingssysteemversies.

Notitie

Azure IoT Edge-softwarepakketten zijn onderworpen aan de licentievoorwaarden die zich in elk pakket (usr/share/doc/{package-name} of de LICENSE map) bevinden. Lees de licentievoorwaarden voordat u een pakket gebruikt. Uw installatie en het gebruik van een pakket vormen uw aanvaarding van deze voorwaarden. Als u niet akkoord gaat met de licentievoorwaarden, gebruikt u dat pakket niet.

Een containerengine installeren

Azure IoT Edge is afhankelijk van een OCI-compatibele containerruntime. Voor productiescenario's raden we u aan de Moby-engine te gebruiken. De Moby-engine is de enige containerengine die officieel wordt ondersteund met IoT Edge. Docker CE/EE-containerinstallatiekopieën zijn compatibel met de Moby-runtime.

Installeer de Moby-engine.

sudo apt-get update; \
  sudo apt-get install moby-engine

De containerengine stelt standaard geen limieten voor de grootte van containerlogboeken in. Na verloop van tijd kan dit ertoe leiden dat het apparaat vol raakt met logboeken en onvoldoende schijfruimte heeft. U kunt uw logboek echter zo configureren dat dit lokaal wordt weergegeven, hoewel dit optioneel is. Zie controlelijst voor productie-implementatie voor meer informatie over logboekregistratieconfiguratie.

In de volgende stappen ziet u hoe u uw container configureert voor het gebruik van local het logboekregistratiestuurprogramma als het mechanisme voor logboekregistratie.

  1. Het configuratiebestand van de bestaande Docker-daemon maken of bewerken

    sudo nano /etc/docker/daemon.json
    
  2. Stel het standaardstuurprogramma voor logboekregistratie in op het local logboekregistratiestuurprogramma, zoals wordt weergegeven in het voorbeeld.

       {
          "log-driver": "local"
       }
    
  3. Start de containerengine opnieuw om de wijzigingen van kracht te laten worden.

    sudo systemctl restart docker
    

De IoT Edge-runtime installeren

De IoT Edge-service biedt en onderhoudt beveiligingsstandaarden op het IoT Edge-apparaat. De service wordt gestart bij elke opstartbewerking en bootstrapt het apparaat door de rest van de IoT Edge-runtime te starten.

Notitie

Vanaf versie 1.2 verwerkt de IoT-identiteitsservice identiteitsinrichting en -beheer voor IoT Edge en voor andere apparaatonderdelen die moeten communiceren met IoT Hub.

De stappen in deze sectie vertegenwoordigen het gebruikelijke proces voor het installeren van de nieuwste IoT Edge-versie op een apparaat met internetverbinding. Als u een specifieke versie, zoals een voorlopige versie, moet installeren of offline moet installeren, volgt u de stappen voor offline - of specifieke versie-installatie verderop in dit artikel.

Tip

Als u al een IoT Edge-apparaat met een oudere versie hebt en een upgrade wilt uitvoeren naar de nieuwste versie, gebruikt u de stappen in De IoT Edge-beveiligingsdaemon en -runtime bijwerken. Latere versies verschillen voldoende van eerdere versies van IoT Edge die specifieke stappen nodig zijn om een upgrade uit te voeren.

Installeer de nieuwste versie van IoT Edge en het IoT Identity Service-pakket (als u nog niet up-to-date bent):

  • 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
    

Het optionele defender-iot-micro-agent-edge pakket bevat de microagent voor Microsoft Defender for IoT-beveiliging die inzicht biedt in beveiligingspostuurbeheer, beveiligingsproblemen, detectie van bedreigingen, vlootbeheer en meer om u te helpen uw IoT Edge-apparaten te beveiligen. Het is raadzaam om de microagent te installeren met de Edge-agent om beveiligingsbewaking en beveiliging van uw Edge-apparaten mogelijk te maken. Zie Wat is Microsoft Defender voor IoT voor apparaatbouwers voor meer informatie over Microsoft Defender voor IoT.

Het apparaat inrichten met de cloudidentiteit

Nu de containerengine en de IoT Edge-runtime op uw apparaat zijn geïnstalleerd, kunt u het apparaat instellen met de cloudidentiteits- en verificatiegegevens.

  1. Maak het configuratiebestand voor uw apparaat op basis van een sjabloonbestand dat is opgegeven als onderdeel van de IoT Edge-installatie.

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    
  2. Open het configuratiebestand op het IoT Edge-apparaat.

    sudo nano /etc/aziot/config.toml
    
  3. Zoek de sectie Inrichten van het bestand en verwijder opmerkingen bij de regels voor handmatige inrichting met X.509-identiteitscertificaat. Zorg ervoor dat eventuele andere inrichtingssecties worden uitgecommentarieerd.

    # 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"
    

Werk de volgende velden bij:

  • iothub_hostname: Hostnaam van de IoT Hub waar het apparaat verbinding mee maakt. Bijvoorbeeld: {IoT hub name}.azure-devices.net.
  • device_id: de id die u hebt opgegeven toen u het apparaat registreerde.
  • identity_cert: URI naar een identiteitscertificaat op het apparaat, bijvoorbeeld: file:///path/identity_certificate.pem. Of geef het certificaat dynamisch uit met BEHULP van EST of een lokale certificeringsinstantie.
  • identity_pk: URI naar het persoonlijke-sleutelbestand voor het opgegeven identiteitscertificaat, bijvoorbeeld: file:///path/identity_key.pem. Of geef een PKCS#11 URI op en geef vervolgens uw configuratiegegevens op in de

De sectie PKCS#11 verderop in het configuratiebestand.

Zie IoT Edge-certificaten beheren voor meer informatie over certificaten.

Sla het bestand op en sluit het bestand.

CTRL + X, , YEnter

Pas uw wijzigingen toe nadat u de inrichtingsgegevens in het configuratiebestand hebt ingevoerd:

sudo iotedge config apply

Modules implementeren

Als u uw IoT Edge-modules wilt implementeren, gaat u naar uw IoT-hub in Azure Portal en gaat u vervolgens naar:

  1. Selecteer Apparaten in het menu IoT Hub.

  2. Selecteer uw apparaat om de bijbehorende pagina te openen.

  3. Selecteer het tabblad Modules instellen.

  4. Omdat we de standaardmodules van IoT Edge (edgeAgent en edgeHub) willen implementeren, hoeven we geen modules aan dit deelvenster toe te voegen. Selecteer Dus selecteer Beoordelen en maken onderaan.

  5. U ziet de JSON-bevestiging van uw modules. Selecteer Maken om de modules te implementeren.<

Zie Een module implementeren voor meer informatie.

Geslaagde configuratie controleren

Controleer of de runtime goed is geïnstalleerd en geconfigureerd op uw IoT Edge-apparaat.

Tip

U hebt verhoogde bevoegdheden nodig om iotedge-opdrachten uit te voeren. Nadat u zich de eerste keer na de installatie van de IoT Edge-runtime hebt afgemeld en opnieuw hebt aangemeld, worden uw machtigingen automatisch bijgewerkt. Gebruik tot die tijd sudo voorafgaand aan de opdrachten.

Controleer of de IoT Edge-systeemservice wordt uitgevoerd.

sudo iotedge system status

Een geslaagd statusantwoord is Ok.

Als u problemen met de service moet oplossen, haalt u de servicelogboeken op.

sudo iotedge system logs

Gebruik het hulpprogramma om de check configuratie- en verbindingsstatus van het apparaat te controleren.

sudo iotedge check

U kunt een reeks antwoorden verwachten die OK (groen), Waarschuwing (geel) of Fout (rood) kunnen bevatten. Zie Oplossingen voor veelvoorkomende problemen voor Azure IoT Edge voor het oplossen van veelvoorkomende fouten.

Screenshot of sample responses from the check command.

Tip

sudo Gebruik altijd om het controleprogramma uit te voeren, zelfs nadat uw machtigingen zijn bijgewerkt. Het hulpprogramma heeft verhoogde bevoegdheden nodig om toegang te krijgen tot het configuratiebestand om de configuratiestatus te verifiëren.

Notitie

Op een nieuw ingericht apparaat ziet u mogelijk een fout met betrekking tot IoT Edge Hub:

× productiegereedheid: de opslagmap van Edge Hub blijft behouden in het hostbestandssysteem - Fout

Kan de huidige status van de EdgeHub-container niet controleren

Deze fout wordt verwacht op een nieuw ingericht apparaat omdat de IoT Edge Hub-module niet wordt uitgevoerd. Als u de fout wilt oplossen, stelt u in IoT Hub de modules voor het apparaat in en maakt u een implementatie. Als u een implementatie voor het apparaat maakt, worden de modules op het apparaat gestart, inclusief de IoT Edge Hub-module.

Bekijk alle modules die op uw IoT Edge-apparaat worden uitgevoerd. Wanneer de service voor het eerst wordt gestart, ziet u alleen dat de edgeAgent-module wordt uitgevoerd. De edgeAgent-module wordt standaard uitgevoerd en helpt bij het installeren en starten van aanvullende modules die u op uw apparaat implementeert.

sudo iotedge list

Wanneer u een nieuw IoT Edge-apparaat maakt, wordt de statuscode 417 -- The device's deployment configuration is not set weergegeven in Azure Portal. Deze status is normaal en betekent dat het apparaat gereed is voor het ontvangen van een module-implementatie.

Offline of specifieke versie-installatie (optioneel)

De stappen in deze sectie zijn bedoeld voor scenario's die niet worden gedekt door de standaardinstallatiestappen. Dit kan omvatten:

  • IoT Edge installeren terwijl u offline bent
  • Een versie van een releasekandidaat installeren

Gebruik de stappen in deze sectie als u een specifieke versie van de Azure IoT Edge-runtime wilt installeren die niet beschikbaar is via pakketbeheer. De Microsoft-pakketlijst bevat alleen een beperkte set recente versies en de bijbehorende subversies. Deze stappen zijn dus bedoeld voor iedereen die een oudere versie of een kandidaatversie van de release wil installeren.

Als u Ubuntu-snaps gebruikt, kunt u een module downloaden en offline installeren. Zie Snaps downloaden en offline installeren voor meer informatie.

Met behulp van curl-opdrachten kunt u de onderdeelbestanden rechtstreeks vanuit de GitHub-opslagplaats van IoT Edge targeten.

Notitie

Als op uw apparaat momenteel IoT Edge versie 1.1 of ouder wordt uitgevoerd, verwijdert u de iotedge - en libiothsm-std-pakketten voordat u de stappen in deze sectie volgt. Zie Update van 1.0 of 1.1 naar de nieuwste versie voor meer informatie.

  1. Navigeer naar de Azure IoT Edge-releases en zoek de releaseversie waarop u zich wilt richten.

  2. Vouw de sectie Assets voor die versie uit.

  3. Elke release moet nieuwe bestanden hebben voor IoT Edge en de identiteitsservice. Als u IoT Edge gaat installeren op een offlineapparaat, downloadt u deze bestanden van tevoren. Gebruik anders de volgende opdrachten om deze onderdelen bij te werken.

    1. Zoek het aziot-identity-servicebestand dat overeenkomt met de architectuur van uw IoT Edge-apparaat. Klik met de rechtermuisknop op de bestandskoppeling en kopieer het koppelingsadres.

    2. Gebruik de gekopieerde koppeling in de volgende opdracht om die versie van de identiteitsservice te installeren:

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

    1. Zoek het aziot-edge-bestand dat overeenkomt met de architectuur van uw IoT Edge-apparaat. Klik met de rechtermuisknop op de bestandskoppeling en kopieer het koppelingsadres.

    2. Gebruik de gekopieerde koppeling in de volgende opdracht om die versie van IoT Edge te installeren.

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

IoT Edge verwijderen

Als u de IoT Edge-installatie van uw apparaat wilt verwijderen, gebruikt u de volgende opdrachten.

De IoT Edge-runtime verwijderen.

sudo apt-get autoremove --purge aziot-edge

Laat de --purge vlag ongewijzigd als u IoT Edge opnieuw wilt installeren en in de toekomst dezelfde configuratiegegevens wilt gebruiken. Met de --purge vlaggen worden alle bestanden verwijderd die zijn gekoppeld aan IoT Edge, inclusief uw configuratiebestanden.

Wanneer de IoT Edge-runtime wordt verwijderd, worden alle containers die worden gemaakt, gestopt, maar nog steeds aanwezig op uw apparaat. Bekijk alle containers om te zien welke containers behouden blijven.

sudo docker ps -a

Verwijder de containers van uw apparaat, inclusief de twee runtimecontainers.

sudo docker rm -f <container name>

Verwijder ten slotte de containerruntime van uw apparaat.

sudo apt-get autoremove --purge moby-engine