IoT Edge-apparaten op schaal maken en inrichten in Linux met behulp van X.509-certificaten
Van toepassing op: IoT Edge 1.5 IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
Dit artikel bevat end-to-end instructies voor het automatisch inrichten van een of meer Linux IoT Edge-apparaten met behulp van X.509-certificaten. U kunt Automatisch Azure IoT Edge-apparaten inrichten met de Azure IoT Hub Device Provisioning Service (DPS). Als u niet bekend bent met het proces van automatische inrichting, raadpleegt u het inrichtingsoverzicht voordat u doorgaat.
De taken zijn als volgt:
- Certificaten en sleutels genereren.
- Maak een afzonderlijke inschrijving voor één apparaat of een groepsinschrijving voor een set apparaten.
- Installeer de IoT Edge-runtime en registreer het apparaat bij IoT Hub.
Het gebruik van X.509-certificaten als attestation-mechanisme is een uitstekende manier om productie te schalen en het inrichten van apparaten te vereenvoudigen. Normaal gesproken worden X.509-certificaten gerangschikt in een certificaatketen van vertrouwen. Vanaf een zelfondertekend of vertrouwd basiscertificaat ondertekent elk certificaat in de keten het volgende lagere certificaat. Met dit patroon maakt u een gedelegeerde vertrouwensketen van het basiscertificaat tot en met elk tussenliggend certificaat tot het uiteindelijke downstreamapparaatcertificaat dat op een apparaat is geïnstalleerd.
Tip
Als uw apparaat een HSM (Hardware Security Module) heeft, zoals een TPM 2.0, raden we u aan de X.509-sleutels veilig op te slaan in de HSM. Meer informatie over het implementeren van zero-touch-inrichting op schaal die in deze blauwdruk wordt beschreven met het iotedge-tpm2cloud-voorbeeld .
Vereisten
Cloudresources
- Een actieve IoT-hub
- Een exemplaar van de IoT Hub Device Provisioning Service in Azure, gekoppeld aan uw IoT-hub
- Als u geen exemplaar van de apparaatinrichtingsservice hebt, kunt u de instructies volgen in de quickstart voor het maken van een nieuwe IoT Hub-apparaatinrichtingsservice en de IoT-hub en de secties voor de apparaatinrichtingsservice koppelen aan de IoT Hub-apparaatinrichtingsservice.
- Nadat de apparaatinrichtingsservice wordt uitgevoerd, kopieert u de waarde van het id-bereik op de overzichtspagina. U gebruikt deze waarde wanneer u de IoT Edge-runtime configureert.
Vereisten voor apparaten
Een fysiek of virtueel Linux-apparaat dat het IoT Edge-apparaat is.
Apparaat-id-certificaten genereren
Het certificaat voor apparaat-id's is een downstreamapparaatcertificaat dat via een certificaatketen van vertrouwen verbinding maakt met het bovenste X.509-certificaat (CA). Voor het certificaat voor apparaat-id's moet de algemene naam (CN) zijn ingesteld op de apparaat-id die het apparaat in uw IoT-hub moet hebben.
Apparaat-id-certificaten worden alleen gebruikt voor het inrichten van het IoT Edge-apparaat en het verifiëren van het apparaat met Azure IoT Hub. Ze ondertekenen geen certificaten, in tegenstelling tot de CA-certificaten die het IoT Edge-apparaat presenteert aan modules of downstreamapparaten voor verificatie. Zie de details van het gebruik van Azure IoT Edge-certificaten voor meer informatie.
Nadat u het certificaat voor apparaat-id's hebt gemaakt, moet u twee bestanden hebben: een .cer- of PEM-bestand dat het openbare gedeelte van het certificaat bevat en een .cer- of PEM-bestand met de persoonlijke sleutel van het certificaat. Als u van plan bent om groepsinschrijving in DPS te gebruiken, hebt u ook het openbare gedeelte van een tussenliggend of basis-CA-certificaat in dezelfde vertrouwensketen nodig.
U hebt de volgende bestanden nodig om automatische inrichting in te stellen met X.509:
- Het certificaat van de apparaat-id en het bijbehorende persoonlijke sleutelcertificaat. Het apparaat-id-certificaat wordt geüpload naar DPS als u een afzonderlijke inschrijving maakt. De persoonlijke sleutel wordt doorgegeven aan de IoT Edge-runtime.
- Een volledig ketencertificaat, dat ten minste de apparaat-id en de tussenliggende certificaten erin moet hebben. Het volledige ketencertificaat wordt doorgegeven aan de IoT Edge-runtime.
- Een tussenliggend of basis-CA-certificaat uit de certificaatketen van vertrouwen. Dit certificaat wordt geüpload naar DPS als u een groepsinschrijving maakt.
Testcertificaten gebruiken (optioneel)
Als u geen certificeringsinstantie hebt om nieuwe identiteitscertificaten te maken en dit scenario wilt uitproberen, bevat de Git-opslagplaats van Azure IoT Edge scripts die u kunt gebruiken om testcertificaten te genereren. Deze certificaten zijn alleen ontworpen voor ontwikkelingstests en mogen niet in productie worden gebruikt.
Als u testcertificaten wilt maken, volgt u de stappen in Democertificaten maken om ioT Edge-apparaatfuncties te testen. Voltooi de twee vereiste secties om de scripts voor het genereren van certificaten in te stellen en een basis-CA-certificaat te maken. Volg vervolgens de stappen om een apparaat-id-certificaat te maken. Wanneer u klaar bent, hebt u het volgende certificaatketen en sleutelpaar nodig:
<WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
<WRKDIR>/private/iot-edge-device-identity-<name>.key.pem
U hebt beide certificaten nodig op het IoT Edge-apparaat. Als u afzonderlijke inschrijving in DPS gaat gebruiken, uploadt u het .cert.pem-bestand. Als u groepsinschrijving in DPS gaat gebruiken, hebt u ook een tussenliggend of basis-CA-certificaat in dezelfde vertrouwensketen nodig om te uploaden. Als u democertificaten gebruikt, gebruikt u het <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem
certificaat voor groepsinschrijving.
Een DPS-inschrijving maken
Gebruik uw gegenereerde certificaten en sleutels om een inschrijving in DPS te maken voor een of meer IoT Edge-apparaten.
Als u één IoT Edge-apparaat wilt inrichten, maakt u een afzonderlijke inschrijving. Als u meerdere apparaten wilt inrichten, volgt u de stappen voor het maken van een DPS-groepsinschrijving.
Wanneer u een inschrijving in DPS maakt, hebt u de mogelijkheid om een eerste apparaatdubbelstatus te declareren. In de apparaatdubbel kunt u tags instellen om apparaten te groeperen op basis van de metrische gegevens die u nodig hebt in uw oplossing, zoals regio, omgeving, locatie of apparaattype. Deze tags worden gebruikt om automatische implementaties te maken.
Zie Apparaatinschrijvingen beheren voor meer informatie over inschrijvingen in de device provisioning-service.
Een afzonderlijke DPS-inschrijving maken
Afzonderlijke inschrijvingen nemen het openbare gedeelte van het identiteitscertificaat van een apparaat op en komen overeen met het certificaat op het apparaat.
Tip
De stappen in dit artikel zijn bedoeld voor Azure Portal, maar u kunt ook afzonderlijke inschrijvingen maken met behulp van de Azure CLI. Zie az iot dps enrollment voor meer informatie. Als onderdeel van de CLI-opdracht gebruikt u de vlag edge om op te geven dat de inschrijving voor een IoT Edge-apparaat is.
Navigeer in Azure Portal naar uw exemplaar van de IoT Hub-apparaatinrichtingsservice.
Selecteer Onder Instellingen de optie Inschrijvingen beheren.
Selecteer Afzonderlijke inschrijving toevoegen en voer vervolgens de volgende stappen uit om de inschrijving te configureren:
Mechanisme: Selecteer X.509.
.pem- of .cer-bestand van het primaire certificaat: upload het openbare bestand van het apparaat-id-certificaat. Als u de scripts hebt gebruikt om een testcertificaat te genereren, kiest u het volgende bestand:
<WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem
IoT Hub-apparaat-id: geef desgewenst een id op voor uw apparaat. U kunt apparaat-id's gebruiken om een afzonderlijk apparaat te richten voor module-implementatie. Als u geen apparaat-id opgeeft, wordt de algemene naam (CN) in het X.509-certificaat gebruikt.
IoT Edge-apparaat: selecteer Waar om aan te geven dat de inschrijving voor een IoT Edge-apparaat is.
Selecteer de IoT-hubs waaraan dit apparaat kan worden toegewezen: Kies de gekoppelde IoT-hub waarmee u uw apparaat wilt verbinden. U kunt meerdere hubs kiezen en het apparaat wordt toegewezen aan een van deze hubs volgens het geselecteerde toewijzingsbeleid.
Initiële apparaatdubbelstatus: voeg desgewenst een tagwaarde toe aan de apparaatdubbel. U kunt tags gebruiken voor doelgroepen van apparaten voor automatische implementatie. Voorbeeld:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Selecteer Opslaan.
Onder Inschrijvingen beheren ziet u de registratie-id voor de inschrijving die u zojuist hebt gemaakt. Noteer het, omdat deze kan worden gebruikt wanneer u uw apparaat inricht.
Nu er een inschrijving voor dit apparaat bestaat, kan de IoT Edge-runtime het apparaat automatisch inrichten tijdens de installatie.
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.
Voor platformbesturingssystemen die in laag 2 worden ondersteund, worden installatiepakketten beschikbaar gesteld in Azure IoT Edge-releases. Zie de installatiestappen in offline- of specifieke versie-installatie.
Installatie kan worden uitgevoerd met een paar opdrachten. Open een terminal en voer de volgende opdrachten uit:
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
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 containerengine die officieel wordt ondersteund met IoT Edge. Docker CE/EE-containerinstallatiekopieën zijn compatibel met de Moby-runtime. Als u Ubuntu Core-snaps gebruikt, wordt de Docker-module onderhouden door Canonical en ondersteund voor productiescenario's.
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.
Het configuratiebestand van de bestaande Docker-daemon maken of bewerken
sudo nano /etc/docker/daemon.json
Stel het standaardstuurprogramma voor logboekregistratie in op het
local
logboekregistratiestuurprogramma, zoals wordt weergegeven in het voorbeeld.{ "log-driver": "local" }
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
Zodra de runtime op uw apparaat is geïnstalleerd, configureert u het apparaat met de informatie die wordt gebruikt om verbinding te maken met de apparaatinrichtingsservice en IoT Hub.
Zorg ervoor dat de volgende informatie gereed is:
- De waarde van het DPS-id-bereik. U kunt deze waarde ophalen op de overzichtspagina van uw DPS-exemplaar in Azure Portal.
- Het certificaatketenbestand van de apparaatidentiteit op het apparaat.
- Het apparaat-id-sleutelbestand op het apparaat.
Maak een 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
Open het configuratiebestand op het IoT Edge-apparaat.
sudo nano /etc/aziot/config.toml
Zoek de sectie Inrichten van het bestand. Verwijder opmerkingen bij de regels voor DPS-inrichting met X.509-certificaat en zorg ervoor dat eventuele andere inrichtingslijnen als commentaar worden weergegeven.
# 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
Werk de waarde bij van
id_scope
de bereik-id die u hebt gekopieerd uit uw exemplaar van DPS.Geef een
registration_id
op voor het apparaat. Dit is de id die het apparaat heeft in IoT Hub. De registratie-id moet overeenkomen met de algemene naam (CN) van het identiteitscertificaat.Werk de waarden van
identity_cert
enidentity_pk
met uw certificaat en sleutelgegevens bij.De waarde van het identiteitscertificaat kan worden opgegeven als een bestands-URI of kan dynamisch worden uitgegeven met behulp van EST of een lokale certificeringsinstantie. Verwijder slechts één regel, op basis van de indeling die u wilt gebruiken.
De persoonlijke sleutelwaarde van de identiteit kan worden opgegeven als een bestands-URI of een PKCS#11-URI. Verwijder slechts één regel, op basis van de indeling die u wilt gebruiken.
Als u PKCS#11 URI's gebruikt, zoekt u de sectie PKCS#11 in het configuratiebestand en geeft u informatie op over uw PKCS#11-configuratie.
Zie IoT Edge-certificaten beheren voor meer informatie over certificaten.
Zoek desgewenst de sectie voor de automatische herinrichtingsmodus van het bestand. Gebruik de
auto_reprovisioning_mode
parameter om het herinrichtingsgedrag van uw apparaat te configureren. Dynamisch : opnieuw inrichten wanneer het apparaat detecteert dat het mogelijk is verplaatst van de ene IoT Hub naar het andere. Dit is de standaardinstelling. AlwaysOnStartup : opnieuw inrichten wanneer het apparaat opnieuw wordt opgestart of een crash veroorzaakt dat de daemons opnieuw worden opgestart. OnErrorOnly : het opnieuw inrichten van apparaten wordt nooit automatisch geactiveerd. Elke modus heeft een impliciete terugval van het opnieuw inrichten van apparaten als het apparaat geen verbinding kan maken met IoT Hub tijdens het inrichten van identiteiten vanwege connectiviteitsfouten. Zie concepten voor het opnieuw inrichten van IoT Hub-apparaten voor meer informatie.Verwijder desgewenst de opmerking bij de
payload
parameter om het pad naar een lokaal JSON-bestand op te geven. De inhoud van het bestand wordt als extra gegevens verzonden naar DPS wanneer het apparaat wordt geregistreerd. Dit is handig voor aangepaste toewijzing. Als u bijvoorbeeld uw apparaten wilt toewijzen op basis van een IoT-Plug en Play model-id zonder menselijke tussenkomst.Sla het bestand op en sluit het bestand.
Pas de configuratiewijzigingen toe die u hebt aangebracht in IoT Edge.
sudo iotedge config apply
Geslaagde installatie controleren
Als de runtime is gestart, kunt u naar uw IoT Hub gaan en Beginnen met het implementeren van IoT Edge-modules op uw apparaat.
U kunt controleren of de afzonderlijke inschrijving die u hebt gemaakt in de Device Provisioning Service is gebruikt. Navigeer naar uw exemplaar van de device provisioning service in Azure Portal. Open de inschrijvingsgegevens voor de afzonderlijke inschrijving die u hebt gemaakt. U ziet dat de status van de inschrijving is toegewezen en dat de apparaat-id wordt vermeld.
Gebruik de volgende opdrachten op uw apparaat om te controleren of ioT Edge is geïnstalleerd en gestart.
Controleer de status van de IoT Edge-service.
sudo iotedge system status
Bekijk servicelogboeken.
sudo iotedge system logs
Lijst met actieve modules.
sudo iotedge list
Volgende stappen
Met het registratieproces van de device provisioning service kunt u de apparaat-id en apparaatdubbeltags instellen op hetzelfde moment als u het nieuwe apparaat inricht. U kunt deze waarden gebruiken om afzonderlijke apparaten of groepen apparaten te richten met behulp van automatisch apparaatbeheer. Leer hoe u IoT Edge-modules op schaal implementeert en bewaakt met behulp van Azure Portal of met behulp van Azure CLI.