Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
IoT Edge 1.1
Wichtig
IoT Edge 1.1 Ende des Supports war der 13. Dezember 2022. Informationen darüber, wie dieses Produkt, dieser Dienst, diese Technologie oder diese API unterstützt werden, finden Sie im Microsoft Product Lifecycle. Weitere Informationen zum Aktualisieren auf die neueste Version von IoT Edge finden Sie unter Update IoT Edge.
Dieser Artikel enthält End-to-End-Anweisungen für die automatische Bereitstellung eines oder mehrerer IoT Edge Linux-Geräte mit X.509-Zertifikaten. Sie können Azure loT Edge-Geräte mit dem Azure loT Hub-Device Provisioning Service (DPS) automatisch bereitstellen. Wenn Sie mit dem Prozess der automatischen Bereitstellung nicht vertraut sind, lesen Sie die Übersicht zur Bereitstellung, bevor Sie den Vorgang fortsetzen.
Die Aufgaben sind wie folgt:
- Generieren Sie Zertifikate und Schlüssel.
- Erstellen Sie entweder eine individuelle Registrierung für ein einzelnes Gerät oder eine Gruppenregistrierung für eine Gruppe von Geräten.
- Installieren Sie die IoT Edge-Runtime, und registrieren Sie das Gerät bei IoT Hub.
Die Verwendung von X.509-Zertifikaten als Nachweismechanismus ist eine exzellente Möglichkeit, die Produktion zu skalieren und die Gerätebereitstellung zu vereinfachen. X.509-Zertifikate werden normalerweise in einer Zertifikatvertrauenskette angeordnet. Beginnend mit einem selbst signierten oder vertrauenswürdigen Stammzertifikat signiert jedes Zertifikat in der Kette das nächstniedrigere Zertifikat. Mit diesem Muster wird eine delegierte Vertrauenskette vom Stammzertifikat über jedes Zwischenzertifikat bis zum endgültigen Zertifikat für nachgeschaltete Geräte erstellt, das auf einem Gerät installiert ist.
Tipp
Wenn Ihr Gerät ein Hardwaresicherheitsmodul (HSM) enthält, z. B. ein TPM 2.0, empfehlen wir, die X.509-Schlüssel sicher im HSM zu speichern. Informieren Sie sich ausführlicher darüber, wie Sie die Zero-Touch-Bereitstellung in großem Maßstab implementieren können, die in dieser Blaupause mit dem Beispiel iotedge-tpm2cloud beschrieben wird.
Voraussetzungen
Cloudressourcen
- Ein aktiver IoT-Hub
- Eine Instanz des IoT Hub Device Provisioning Service (Gerätebereitstellungsdienst) in Azure, die mit Ihrem IoT-Hub verknüpft ist
- Wenn Sie über keine Instanz des Device Provisioning Service verfügen, können Sie die Anweisungen in den Abschnitten Erstellen eines neuen IoT Hub Device Provisioning Service und Verknüpfen des IoT-Hubs und Ihres Gerätebereitstellungsdiensts der Schnellstartanleitung zum IoT Hub Device Provisioning Service befolgen.
- Nachdem Sie den Bereitstellungsdienst für Geräte gestartet haben, kopieren Sie den Wert von ID Scope von der Seite „Übersicht“. Sie können diesen Wert verwenden, wenn Sie IoT Edge-Runtime konfigurieren.
Geräteanforderungen
Ein physisches oder virtuelles Linux-Gerät, dass das IoT Edge-Gerät sein soll.
Generieren von Geräteidentitätszertifikaten
Das Geräteidentitätszertifikat ist ein Zertifikat für nachgeschaltete Geräte, das über eine Zertifikatvertrauenskette mit dem obersten X.509-Zertifikat der Zertifizierungsstelle (Certificate Authority, CA) verbunden ist. Für das Geräteidentitätszertifikat muss der allgemeine Name (Common Name, CN) auf die gewünschte Geräte-ID festgelegt werden, die das Gerät in Ihrem IoT-Hub haben soll.
Geräteidentitätszertifikate werden nur für die Bereitstellung des IoT Edge Geräts und die Authentifizierung des Geräts bei Azure IoT Hub verwendet. Im Gegensatz zu den CA-Zertifikaten, die das IoT Edge-Gerät Modulen oder nachgeschalteten Geräten zur Überprüfung vorlegt, dienen sie nicht als Signaturzertifikate. Weitere Informationen finden Sie unter Details zur Verwendung von Azure IoT Edge-Zertifikaten.
Nachdem Sie das Geräteidentitätszertifikat erstellt haben, sollten Sie zwei Dateien haben: eine CER- oder PEM-Datei, die den öffentlichen Teil des Zertifikats enthält, und eine CER- oder PEM-Datei mit dem privaten Schlüssel des Zertifikats. Wenn Sie die Gruppenregistrierung in DPS verwenden möchten, benötigen Sie außerdem den öffentlichen Teil eines Zwischenzertifikats oder Stammzertifikats in derselben Vertrauenskette von Zertifikaten.
Zum Einrichten der automatischen Bereitstellung mit X.509 benötigen Sie die folgenden Dateien:
- Das Geräteidentitätszertifikat und das zugehörige private Schlüsselzertifikat. Das Geräteidentitätszertifikat wird auf DPS hochgeladen, wenn Sie eine individuelle Registrierung erstellen. Der private Schlüssel wird an die IoT Edge-Runtime übermittelt.
- Ein vollständiges Kettenzertifikat, das mindestens die Geräteidentität und die Zwischenzertifikate enthalten sollte. Das vollständige Kettenzertifikat wird an die IoT Edge-Runtime übermittelt.
- Ein Zwischen- oder Stamm-CA-Zertifikat aus der Zertifikatskette des Vertrauens. Dieses Zertifikat wird auf DPS hochgeladen, wenn Sie eine Gruppenregistrierung erstellen.
Hinweis
Zurzeit verhindert eine Einschränkung in libiothsm die Verwendung von Zertifikaten, die am oder nach dem 1. Januar 2038 ablaufen.
Verwenden von Testzertifikaten (optional)
Wenn Sie über keine Zertifizierungsstelle zum Erstellen neuer Identitätszertifikate verfügen und dieses Szenario testen möchten, enthält das Git-Repository für Azure IoT Edge Skripts, mit denen Sie Testzertifikate generieren können. Diese Zertifikate sind nur für Entwicklungstests konzipiert und dürfen in der Produktionsumgebung nicht verwendet werden.
Führen Sie zum Erstellen von Testzertifikaten die Schritte in Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten aus. Führen Sie die beiden erforderlichen Abschnitte aus, um die Skripts zur Zertifikatgenerierung einzurichten und ein Root-CA-Zertifikat zu erstellen. Führen Sie danach die Schritte zum Erstellen eines Geräteidentitätszertifikats aus. Wenn Sie sie abgeschlossen haben, sollten Sie über die folgende Zertifikatskette und das folgende Schlüsselpaar verfügen:
<WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem<WRKDIR>/private/iot-edge-device-identity-<name>.key.pem
Sie benötigen diese beiden Zertifikate auf dem IoT Edge-Gerät. Wenn Sie die individuelle Registrierung in DPS verwenden möchten, laden Sie die .cert.pem-Datei hoch. Wenn Sie die Gruppenregistrierung in DPS verwenden möchten, benötigen Sie außerdem ein Zwischenzertifikat oder ein Stammzertifikat der Zertifizierungsstelle in derselben Zertifikatvertrauenskette, um es hochzuladen. Wenn Sie Demozertifikate verwenden, nutzen Sie das <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem-Zertifikat für die Gruppenregistrierung.
DPS-Anmeldung erstellen
Verwenden Sie Ihre generierten Zertifikate und Schlüssel, um in DPS eine Registrierung für ein oder mehrere IoT Edge-Geräte zu erstellen.
Wenn Sie ein einzelnes IoT Edge-Gerät bereitstellen möchten, erstellen Sie eine individuelle Registrierung. Wenn Sie mehrere Geräte bereitstellen müssen, führen Sie die Schritte zum Erstellen einer DPS-Gruppenregistrierung aus.
Wenn Sie eine Einschreibung im DPS vornehmen, haben Sie die Möglichkeit, einen anfänglichen Geräte-Zwilling-Status festzulegen. Im Gerätezwilling können Sie Tags zum Gruppieren von Geräten nach jeder beliebigen Metrik, die Sie in Ihrer Lösung benötigen, wie Region, Umgebung, Standort oder Gerätetyp, festlegen. Diese Tags werden verwendet, um automatische Bereitstellungen zu erstellen.
Weitere Informationen zu Registrierungen im Device Provisioning Service finden Sie unter Verwalten von Geräteregistrierungen.
Einen individuellen DPS-Antrag erstellen
Individuelle Registrierungen verwenden den öffentlichen Teil des Identitätszertifikats eines Geräts und gleichen es mit dem Zertifikat auf dem Gerät ab.
Tipp
Die Schritte in diesem Artikel gelten für das Azure-Portal. Sie können individuelle Registrierungen aber auch mithilfe der Azure CLI erstellen. Weitere Informationen finden Sie unter az iot dps-Registrierung. Verwenden Sie als Teil des CLI-Befehls das Flag edge-enabled (Edge-fähig), um anzugeben, dass die Registrierung für ein IoT Edge-Gerät gilt.
Navigieren Sie im Azure-Portal zu Ihrer Instanz des IoT Hub Device Provisioning Service.
Klicken Sie in Einstellungen auf Registrierungen verwalten.
Klicken Sie auf Individuelle Registrierung hinzufügen, und führen Sie dann die folgenden Schritte aus, um die Registrierung zu konfigurieren:
Mechanismus: Wählen Sie X.509 aus.
Primäre Zertifikatsdatei .pem oder .cer: Laden Sie die öffentliche Datei aus dem Geräteidentitätszertifikat hoch. Wenn Sie die Skripts zum Generieren eines Testzertifikats verwendet haben, wählen Sie die folgende Datei aus:
<WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pemIoT Hub Device ID: Geben Sie bei Bedarf eine ID für Ihr Gerät an. Sie können mithilfe von Geräte-IDs ein einzelnes Gerät als Ziel für die Modulbereitstellung festlegen. Wenn Sie keine Geräte-ID angeben, wird der allgemeine Name (Common Name, CN) im X.509-Zertifikat verwendet.
IoT Edge-Gerät: Wählen Sie True aus, um zu deklarieren, dass die Registrierung für ein IoT Edge-Gerät gilt.
Wählen Sie die IoT-Hubs aus, denen dieses Gerät zugewiesen werden kann: Wählen Sie den verknüpften IoT-Hub aus, mit dem Sie Ihr Gerät verbinden möchten. Sie können mehrere Hubs auswählen, und das Gerät wird dann je nach gewählter Zuteilungsrichtlinie einem dieser Hubs zugewiesen.
Initial Device Twin State: Fügen Sie einen Tagwert hinzu, der dem Gerätezwilling hinzugefügt werden soll, falls gewünscht. Mithilfe von Tags können Sie Gruppen von Geräten als Ziel für die automatische Bereitstellung festlegen. Beispiel:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Wählen Sie Speichern aus.
Unter Registrierungen verwalten wird die Registrierungs-ID für die Registrierung angezeigt, die Sie gerade erstellt haben. Merken Sie sich das, da es bei der Bereitstellung Ihres Geräts verwendet werden kann.
Nachdem nun eine Registrierung für dieses Gerät vorhanden ist, kann die IoT Edge-Runtime das Gerät während der Installation automatisch bereitstellen.
Installieren von IoT Edge
In diesem Abschnitt bereiten Sie Ihre Linux-VM oder Ihr physisches Gerät für IoT Edge vor. Anschließend installieren Sie IoT Edge.
Führen Sie die folgenden Befehle aus, um das Paketrepository hinzuzufügen, und fügen Sie dann Ihrer Liste von vertrauenswürdigen Schlüsseln den Microsoft-Paketsignaturschlüssel hinzu.
Wichtig
Am 30. Juni 2022 wurde Raspberry Pi OS Stretch aus der Betriebssystem-Supportliste der Stufe 1 zurückgezogen. Wenn Sie potenzielle Sicherheitsrisiken vermeiden möchten, aktualisieren Sie Ihr Hostbetriebssystem auf Bullseye.
Die Installation kann mit einigen wenigen Befehlen erledigt werden. Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:
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.deb18.04:
wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Hinweis
Für Azure IoT Edge-Softwarepakete gelten die in jedem Paket (im Verzeichnis usr/share/doc/{package-name} oder LICENSE) enthaltenen Lizenzbedingungen. Lesen Sie die Lizenzbedingungen, bevor Sie ein Paket verwenden. Durch Ihre Installation und Verwendung eines Pakets erklären Sie Ihre Zustimmung zu diesen Bedingungen. Wenn Sie den Lizenzbedingungen nicht zustimmen, verwenden Sie das Paket nicht.
Installieren einer Containerengine
Azure IoT Edge basiert auf einer OCI-kompatiblen Containerruntime. Für Produktionsszenarien empfehlen wir die Verwendung der Moby-Engine. Das Moby-Modul ist das einzige Containermodul, das offiziell mit IoT Edge unterstützt wird. Docker CE / EE-Container-Images sind mit der Moby-Runtime kompatibel.
Installieren Sie die Moby-Engine.
sudo apt-get update; \
sudo apt-get install moby-engine
Nachdem das Moby-Modul erfolgreich installiert wurde, konfigurieren Sie es so, dass local Protokollierungstreiber als Protokollierungsmechanismus verwendet wird. Weitere Informationen zur Protokollierungskonfiguration finden Sie in der Checkliste zur Produktionsbereitstellung.
Erstellen oder öffnen Sie die Config-Datei des Docker-Daemons unter
/etc/docker/daemon.json.Legen Sie den Standardprotokollierungstreiber auf den
localProtokollierungstreiber fest, wie im folgenden Beispiel gezeigt.{ "log-driver": "local" }Starten Sie die Container-Engine neu, damit die Änderungen wirksam werden.
sudo systemctl restart dockerTipp
Wenn beim Installieren der Moby-Container-Engine Fehler angezeigt werden, überprüfen Sie Ihren Linux-Kernel auf Moby-Kompatibilität. Einige Hersteller von eingebetteten Geräten stellen Geräteimages mit benutzerdefinierten Linux-Kernels bereit, denen die Funktionen für die Containerengine-Kompatibilität fehlen. Führen Sie den folgenden Befehl aus, der das von Moby bereitgestellte check-config-Skript verwendet, um die Kernelkonfiguration zu überprüfen:
curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh chmod +x check-config.sh ./check-config.shÜberprüfen Sie in der Ausgabe des Skripts, ob alle Elemente unter
Generally NecessaryundNetwork Driversaktiviert sind. Wenn Funktionen fehlen, aktivieren Sie diese, indem Sie Ihren Kernel aus der Quelle neu erstellen und die zugehörigen Module auswählen, die in die entsprechende Konfigurationsdatei für den Kernel eingebunden werden sollen. Gleiches gilt, wenn Sie einen Kernelkonfigurationsgenerator wiedefconfigodermenuconfigverwenden: Suchen und aktivieren Sie die entsprechenden Funktionen, und erstellen Sie dann den Kernel dementsprechend neu. Sobald Sie Ihren neu bearbeiteten Kernel bereitgestellt haben, führen Sie das check-config-Skript erneut aus, um zu überprüfen, ob alle erforderlichen Funktionen erfolgreich aktiviert wurden.
Installieren der IoT Edge-Runtime
Der IoT Edge-Sicherheitsdaemon stellt Sicherheitsstandards auf dem IoT Edge-Gerät bereit und verwaltet diese. Der Daemon wird bei jedem Startvorgang ausgeführt und initialisiert das Gerät, indem er den Rest der IoT Edge-Laufzeit startet.
Die Schritte in diesem Abschnitt stellen den typischen Prozess zum Installieren der neuesten Version auf einem Gerät dar, das über eine Internetverbindung verfügt. Wenn Sie eine bestimmte Version, z. B eine Vorabversion, installieren oder eine Offlineinstallation durchführen müssen, führen Sie die Schritte unter Offlineinstallation oder Installation einer bestimmten Version weiter unten in diesem Artikel aus.
Installieren Sie IoT Edge Version 1.1.* zusammen mit dem libiothsm-std Paket:
sudo apt-get update; \
sudo apt-get install iotedge
Hinweis
IoT Edge Version 1.1 ist der langfristige Supportzweig von IoT Edge. Wenn Sie eine ältere Version ausführen, empfehlen wir die Installation oder Aktualisierung auf den neuesten Patch, da ältere Versionen nicht mehr unterstützt werden.
Bereitstellen des Geräts mit seiner Cloud-Identität
Konfigurieren Sie Ihr Gerät mit den Informationen, die es zum Herstellen einer Verbindung mit dem Gerätebereitstellungsdienst und IoT Hub verwendet, sobald die Runtime auf Ihrem Gerät installiert ist.
Halten Sie die folgenden Informationen bereit:
- Der DPS-ID-Scope-Wert. Sie können diesen Wert im Azure-Portal von der Übersichtsseite für Ihre DPS-Instanz abrufen.
- Die Zertifikatskettendatei für das Geräteidentitätszertifikat auf dem Gerät.
- Die Schlüsseldatei für die Geräteidentität auf dem Gerät.
Öffnen Sie die Konfigurationsdatei auf dem IoT Edge-Gerät.
sudo nano /etc/iotedge/config.yamlSuchen Sie den Abschnitt zu Bereitstellungskonfigurationen der Datei. Kommentieren Sie die Zeilen für die DPS X.509-Zertifikatbereitstellung aus, und stellen Sie sicher, dass alle anderen Bereitstellungszeilen auskommentiert sind.
Die
provisioning:-Zeile sollte kein vorangehendes Leerzeichen aufweisen, und geschachtelte Elemente sollten durch zwei Leerzeichen eingerückt werden.# DPS X.509 provisioning configuration provisioning: source: "dps" global_endpoint: "https://global.azure-devices-provisioning.net" scope_id: "SCOPE_ID_HERE" attestation: method: "x509" # registration_id: "OPTIONAL_REGISTRATION_ID_LEAVE_COMMENTED_OUT_TO_REGISTER_WITH_CN_OF_IDENTITY_CERT" identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE_HERE" identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY_HERE" # always_reprovision_on_startup: true # dynamic_reprovisioning: falseAktualisieren Sie die Werte
scope_id,identity_certundidentity_pkmit Ihren DPS- und Geräteinformationen.Wenn Sie das X.509-Zertifikat und wichtige Informationen zur Datei config.yaml hinzufügen, sollten die Pfade als Datei-URIs bereitgestellt werden. Beispiel:
file:///<path>/identity_certificate_chain.pemfile:///<path>/identity_key.pemGeben Sie optional das
registration_idfür das Gerät an, das mit dem Common Name (CN) des Identitätszertifikats übereinstimmen muss. Wenn Sie diese Zeile auskommentiert lassen, wird CN automatisch angewendet.Sie können optional die Zeilen
always_reprovision_on_startupoderdynamic_reprovisioningverwenden, um das Neuversorgungsverhalten Ihres Geräts zu konfigurieren. Wenn ein Gerät so eingestellt ist, dass es beim Start neu bereitgestellt wird, wird es immer versuchen, zuerst mit DPS bereitzustellen und dann, falls das fehlschlägt, auf das Backup zur Bereitstellung zurückzugreifen. Wenn ein Gerät so eingestellt ist, dass es sich dynamisch neu bereitstellen kann, wird IoT Edge (und alle Module) neu gestartet und erneut bereitgestellt, wenn ein Ereignis für die Neubereitstellung erkannt wird, z. B. wenn das Gerät von einem IoT Hub in einen anderen verschoben wird. Insbesondere überprüft IoT Edge aufbad_credential- oderdevice_disabled-Fehler aus dem SDK, um das Re-Provisionierungsereignis zu erkennen. Um dieses Ereignis manuell auszulösen, deaktivieren Sie das Gerät im IoT Hub. Weitere Informationen finden Sie unter Konzepte zur erneuten Bereitstellung von Geräten im IoT Hub.Speichern und schließen Sie die Datei config.yaml.
Starten Sie die IoT Edge-Laufzeit neu, damit alle Konfigurationsänderungen, die Sie auf dem Gerät vorgenommen haben, aufgenommen werden.
sudo systemctl restart iotedge
Bestätigen einer erfolgreichen Installation
Wenn die Runtime erfolgreich gestartet wurde, können Sie zu Ihrem IoT Hub navigieren und mit dem Bereitstellen von IoT Edge-Modulen auf Ihrem Gerät beginnen.
Sie können überprüfen, ob die individuelle Registrierung, die Sie im Gerätebereitstellungsdienst erstellt haben, verwendet wurde. Navigieren Sie im Azure-Portal zu Ihrer Instanz für den Gerätebereitstellungsdienst. Öffnen Sie die Registrierungsdetails für die von Ihnen erstellte individuelle Registrierung. Beachten Sie, dass der Status der Registrierung Zugewiesen lautet und die Geräte-ID aufgeführt ist.
Mit den folgenden Befehlen können Sie auf Ihrem Gerät überprüfen, ob IoT Edge erfolgreich installiert und gestartet wurde.
Überprüfen Sie den Status des IoT Edge-Diensts.
systemctl status iotedge
Untersuchen Sie die Dienstprotokolle.
journalctl -u iotedge --no-pager --no-full
Laufende Module auflisten.
iotedge list
Nächste Schritte
Der Registrierungsprozess des Device Provisioning Service ermöglicht es Ihnen, beim Bereitstellen des neuen Geräts gleichzeitig die Geräte-ID und die Gerätezwillingstags festzulegen. Sie können diese Werte verwenden, um einzelne Geräte oder Gruppen von Geräten über die automatische Geräteverwaltung als Ziel festzulegen. Weitere Informationen finden Sie unter Bedarfsgerechtes Bereitstellen und Überwachen von IoT Edge-Modulen mithilfe des Azure-Portals oder Verwenden der Azure CLI.