Freigeben über


Das Erstellen und Bereitstellen eines IoT Edge-Geräts im großen Stil mithilfe von X.509-Zertifikaten

Gilt für:Häkchen für IoT Edge 1.5 IoT Edge 1.5

Wichtig

IoT Edge 1.5 LTS ist das unterstützte Release. IoT Edge 1.4 LTS wurde am 12. November 2024 eingestellt. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

Dieser Artikel enthält schrittweise Anleitungen zum automatischen Bereitstellen eines oder mehrerer Linux IoT Edge-Geräte mit X.509-Zertifikaten. Automatische Bereitstellung von Azure IoT Edge-Geräten mit dem Azure IoT Hub-Gerätebereitstellungsdienst (DPS). Wenn Sie mit der automatischen Bereitstellung nicht vertraut sind, lesen Sie die Übersicht über die Bereitstellung , bevor Sie fortfahren.

Hier sind die Schritte zum Bereitstellen von IoT Edge-Geräten mit X.509-Zertifikaten:

  1. Generieren Sie Zertifikate und Schlüssel.
  2. Erstellen Sie eine einzelne Registrierung für ein einzelnes Gerät oder eine Gruppenregistrierung für eine Gruppe von Geräten.
  3. Installieren Sie die IoT Edge-Runtime, und registrieren Sie das Gerät bei IoT Hub.

Mit X.509-Zertifikaten können Sie die Produktionsbereitstellung skalieren und die Gerätebereitstellung vereinfachen. X.509-Zertifikate werden normalerweise in einer Zertifikatvertrauenskette angeordnet. Die Kette beginnt mit einem selbstsignierten oder vertrauenswürdigen Stammzertifikat, und jedes Zertifikat in der Kette signiert das nächste niedrigere Zertifikat. Dieses Muster erstellt eine delegierte Vertrauenskette vom Stammzertifikat über jedes Zwischenzertifikat bis zum endgültigen nachgelagerten Gerätezertifikat, das auf einem Gerät installiert ist.

Tipp

Wenn Ihr Gerät über ein Hardwaresicherheitsmodul (Hardware Security Module, HSM) wie ein TPM 2.0 verfügt, speichern Sie die X.509-Schlüssel sicher im HSM. Erfahren Sie, wie Sie die Zero-Touch-Bereitstellung nach Bedarf implementieren können, mit dieser Blaupause mit dem Beispiel Iotedge-tpm2cloud.

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

Geräteanforderungen

Verwenden Sie ein physisches oder virtuelles Linux-Gerät als IoT Edge-Gerät.

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 Geräte-ID festgelegt sein, 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. Diese Zertifikate sind keine Signaturzertifikate. Zertifizierungsstellenzertifikate, die das IoT Edge-Gerät für Module oder nachgeschaltete Geräte darstellt, werden zur Überprüfung verwendet. Weitere Informationen finden Sie unter Details zur Verwendung von Azure IoT Edge-Zertifikaten.

Nachdem Sie das Geräteidentitätszertifikat erstellt haben, verfügen Sie über zwei Dateien: eine .cer oder .pem Datei mit dem öffentlichen Teil des Zertifikats und eine .cer oder .pem Datei mit dem privaten Schlüssel. Wenn Sie die Gruppenregistrierung in DPS verwenden, benötigen Sie in derselben Zertifikatvertrauenskette außerdem den öffentlichen Teil eines Zwischenzertifikats oder eines Stammzertifikats der Zertifizierungsstelle.

Sie benötigen diese Dateien, um die automatische Bereitstellung mit X.509 einzurichten:

  • 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 mit mindestens der Geräteidentität und den Zwischenzertifikaten. Das vollständige Kettenzertifikat wird an die IoT Edge-Runtime übermittelt.
  • Ein Zwischenzertifikat oder ein Zertifikat der Stammzertifizierungsstelle aus der Zertifikatvertrauenskette. Dieses Zertifikat wird auf DPS hochgeladen, wenn Sie eine Gruppenregistrierung erstellen.

Verwenden von Testzertifikaten (optional)

Wenn Sie keine Zertifizierungsstelle zum Erstellen neuer Identitätszertifikate haben und dieses Szenario ausprobieren möchten, verwenden Sie die Skripts im Git-Repository von Azure IoT Edge, um Testzertifikate zu generieren. Verwenden Sie diese Zertifikate nur für Entwicklungstests. Verwenden Sie sie nicht in der Produktion.

Führen Sie zum Erstellen von Testzertifikaten die Schritte in Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten aus. Füllen Sie die beiden erforderlichen Abschnitte aus, um die Skripts für die Zertifikatgenerierung einzurichten und ein Root-CA-Zertifikat zu erstellen. Führen Sie danach die Schritte zum Erstellen eines Geräteidentitätszertifikats aus. Wenn Sie fertig sind, haben Sie die folgende Zertifikatkette und das Schlüsselpaar:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

Sie benötigen beide Zertifikate auf dem IoT Edge-Gerät. Wenn Sie einzelne Registrierungen in DPS verwenden, laden Sie die .cert.pem Datei hoch. Wenn Sie die Gruppenregistrierung in DPS verwenden, laden Sie in derselben Zertifikatvertrauenskette außerdem ein Zwischenzertifikat oder ein Stammzertifikat der Zertifizierungsstelle hoch. Wenn Sie Demozertifikate verwenden, verwenden Sie das <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem-Zertifikat für die Gruppenregistrierung.

Erstellen einer DPS-Registrierung

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 Registrierung im DPS erstellen, haben Sie die Möglichkeit zum Angeben von Anfänglicher Status von Gerätezwilling. Im Gerätezwilling können Sie Tags zum Gruppieren von Geräten nach jeder beliebigen Metrik, z.B. Region, Umgebung, Speicherort oder Geräte, festlegen, die Sie in Ihrer Projektmappe benötigen. Diese Tags werden zum Erstellen von automatischen Bereitstellungen verwendet.

Weitere Informationen zu Registrierungen im Device Provisioning Service finden Sie unter Verwalten von Geräteregistrierungen.

Erstellen einer individuellen DPS-Registrierung

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.

  1. Navigieren Sie im Azure-Portal zu Ihrer Instanz des IoT Hub Device Provisioning Service.

  2. Klicken Sie in Einstellungen auf Registrierungen verwalten.

  3. 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.pem

    • IoT 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, wenn Sie möchten. Mithilfe von Tags können Sie Gruppen von Geräten als Ziel für die automatische Bereitstellung festlegen. Zum Beispiel:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Wählen Sie Speichern.

Unter Registrierungen verwalten wird die Registrierungs-ID für die Registrierung angezeigt, die Sie gerade erstellt haben. Notieren Sie sich diese ID, da sie 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 Ihren virtuellen Linux Computer oder Ihr physisches Gerät für loT 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 Tier-1-Supportliste entfernt. Um potenzielle Sicherheitsrisiken zu vermeiden, aktualisieren Sie Ihr Hostbetriebssystem auf Bullseye.

Für unterstützte Plattformbetriebssysteme der Ebene 2 werden Installationspakete in Azure IoT Edge-Releases zur Verfügung gestellt. Lesen Sie die Installationsschritte in der Offline- oder bestimmten Versionsinstallation (optional).

Die Installation kann mit einigen wenigen Befehlen erledigt werden. Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:

  • 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
    

Weitere Informationen zu den Betriebssystemversionen finden Sie unter Unterstützte Plattformen für Azure IoT Edge.

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. Die Moby-Engine ist die Container-Engine, die offiziell von IoT Edge unterstützt wird. Docker CE/EE-Containerimages sind mit der Moby-Runtime kompatibel. Wenn Sie Ubuntu Core-Snaps verwenden, wird das Docker-Snap von Canonical gewartet und unterstützt Produktionsszenarien.

Installieren Sie die Moby-Engine.

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

Standardmäßig legt die Containerengine keine Grenzwerte für die Größe des Containerprotokolls fest. Im Laufe der Zeit kann diese Situation dazu führen, dass das Gerät voll mit Logdateien wird und der Speicherplatz der Festplatte ausläuft. Sie können Ihr Protokoll jedoch so konfigurieren, dass es lokal angezeigt wird, allerdings ist dies optional. Weitere Informationen zur Protokollierungskonfiguration finden Sie unter "Vorbereiten der Bereitstellung Ihrer IoT Edge-Lösung in der Produktion".

Die folgenden Schritte zeigen Ihnen, wie Sie Ihren Container so konfigurieren, dass der Protokollierungstreiber local als Protokollierungsmechanismus verwendet wird.

  1. Erstellen oder Bearbeiten der Konfigurationsdatei des vorhandenen Docker-Daemons

    sudo nano /etc/docker/daemon.json
    
  2. Legen Sie den Standardprotokollierungstreiber auf den Protokollierungstreiber local fest, wie im folgenden Beispiel gezeigt.

       {
          "log-driver": "local"
       }
    
  3. Starten Sie die Container-Engine neu, damit die Änderungen wirksam werden.

    sudo systemctl restart docker
    

Installieren der IoT Edge-Runtime

Der IoT Edge-Dienst stellt Sicherheitsstandards auf dem IoT Edge-Gerät bereit und sorgt für deren Einhaltung. Der Dienst wird bei jedem Start gestartet und führt durch Starten der restlichen IoT Edge-Runtime einen Bootstrap für das Gerät aus.

Hinweis

Ab Version 1.2 verarbeitet der Azure IoT-Identitätsdienst die Identitätsbereitstellung und -verwaltung für IoT Edge und für andere Gerätekomponenten, die mit IoT Hub kommunizieren müssen.

Die Schritte in diesem Abschnitt stellen den typischen Prozess zur Installation der neuesten IoT Edge-Version auf einem Gerät mit Internetverbindung dar. Wenn Sie eine bestimmte Version( z. B. eine Vorabversion) installieren oder offline installieren müssen, führen Sie die Schritte zur Offlineinstallation oder spezifischen Versionsinstallationsschritte weiter unten in diesem Artikel aus.

Tipp

Wenn Sie bereits über ein IoT Edge-Gerät mit einer älteren Version verfügen und ein Upgrade auf die neueste Version durchführen möchten, führen Sie die Schritte in Update IoT Edge aus. Neuere Versionen unterscheiden sich ausreichend von früheren IoT Edge-Versionen, sodass bestimmte Schritte für das Upgrade erforderlich sind.

Installieren Sie die neueste Version von IoT Edge und das IoT-Identitätsdienstpaket (falls Sie nicht bereits auf dem neuesten Stand sind):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    

Bereitstellen des Geräts mit seiner Cloud-Identität

Nachdem Sie die Laufzeit auf Ihrem Gerät installiert haben, richten Sie das Gerät mit den Informationen ein, die zum Herstellen einer Verbindung mit dem Gerätebereitstellungsdienst und dem IoT Hub verwendet werden.

Stellen Sie sicher, dass Sie über die folgenden Informationen verfügen:

  • Den DPS-Wert ID-Bereich. Rufen Sie diesen Wert über die Übersichtsseite Ihrer DPS-Instanz im Azure-Portal ab.
  • Die Kettendatei für das Geräteidentitätszertifikat auf dem Gerät.
  • Die Schlüsseldatei für die Geräteidentität auf dem Gerät.

Erstellen Sie eine Konfigurationsdatei für Ihr Gerät basierend auf der Vorlagendatei, die in der IoT Edge-Installation enthalten ist.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Öffnen Sie die Konfigurationsdatei auf Ihrem IoT Edge-Gerät.

sudo nano /etc/aziot/config.toml

Suchen Sie den Abschnitt Provisioning (Bereitstellung) der Datei. Entkommentieren Sie die Zeilen für die DPS-Bereitstellung mit X.509-Zertifikat, und stellen Sie sicher, dass alle anderen Bereitstellungszeilen auskommentiert sind.

# 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
  1. Aktualisieren Sie den Wert id_scope mit der Bereichs-ID, die Sie aus Ihrer DPS-Instanz kopiert haben.

  2. Geben Sie ein registration_id für das Gerät ein, bei dem es sich um die ID handelt, die das Gerät im IoT Hub hat. Die Registrierungs-ID muss mit dem allgemeinen Namen (Common Name, CN) des Identitätszertifikats übereinstimmen.

  3. Aktualisieren Sie die Werte von identity_cert und identity_pk mit Ihren Zertifikat- und Schlüsselinformationen.

    Sie können den Identitätszertifikatwert als Datei-URI bereitstellen, oder dieser kann dynamisch mit EST oder einer lokalen Zertifizierungsstelle ausgestellt werden. Entkommentieren Sie nur eine Zeile, basierend auf dem verwendeten Format.

    Sie können den Wert des privaten Identitätsschlüssels als Datei-URI oder PKCS#11-URI angeben. Entkommentieren Sie nur eine Zeile, basierend auf dem verwendeten Format.

    Wenn Sie PKCS#11-URIs verwenden, suchen Sie den Abschnitt PKCS#11 in der Konfigurationsdatei, und geben Sie Ihre PKCS#11-Konfigurationsinformationen ein.

    Weitere Informationen zu Zertifikaten finden Sie unter Verwalten von IoT Edge-Zertifikaten.

    Weitere Informationen zur Bereitstellung von Konfigurationseinstellungen finden Sie unter Konfigurieren von IoT Edge-Geräteeinstellungen.

  4. Suchen Sie optional in der Datei nach dem Abschnitt zum „Modus für die automatische erneute Bereitstellung“. Verwenden Sie den Parameter auto_reprovisioning_mode, um das Verhalten bei der erneuten Bereitstellung Ihres Geräts zu konfigurieren. Dynamisch – Erneute Bereitstellung, wenn das Gerät erkennt, dass es von einem IoT-Hub zu einem anderen verschoben werden kann. Dies ist die Standardeinstellung. AlwaysOnStartup – Erneute Bereitstellung, wenn das Gerät neu gestartet wird oder ein Absturz dazu führt, dass die Daemons neu gestartet werden. OnErrorOnly – Löst niemals automatisch die erneute Bereitstellung des Geräts aus. Jeder Modus verfügt über einen impliziten Fallback zur erneuten Bereitstellung von Geräten, wenn das Gerät während der Identitätsbereitstellung aufgrund von Verbindungsfehlern keine Verbindung mit dem IoT Hub herstellen kann. Weitere Informationen finden Sie unter IoT Hub Device-Konzepte für die erneute Bereitstellung.

  5. Optional können Sie die Auskommentierung des Parameters payload aufheben, um den Pfad zu einer lokalen JSON-Datei anzugeben. Der Inhalt der Datei wird beim Registrieren des Geräts als zusätzliche Daten an DPS gesendet . Dies ist nützlich für die benutzerdefinierte Zuordnung. Beispiel: Sie möchten Ihre Geräte basierend auf der ID des IoT Plug & Play-Modells ohne menschliches Eingreifen zuordnen.

  6. Speichern und schließen Sie die Datei.

Wenden Sie die Konfigurationsänderungen an, die Sie an IoT Edge vorgenommen haben.

sudo iotedge config apply

Bestätigen einer erfolgreichen Installation

Wenn die Laufzeit erfolgreich gestartet wird, wechseln Sie zu Ihrem IoT Hub, und beginnen Sie mit der Bereitstellung von IoT Edge-Modulen auf Ihrem Gerät.

Überprüfen Sie, ob die einzelne Registrierung, die Sie im Gerätebereitstellungsdienst erstellt haben, verwendet wird. Navigieren Sie im Azure-Portal zu Ihrer Device Provisioning-Service-Instanz. Öffnen Sie die Registrierungsdetails für die einzelne Registrierung, die Sie erstellt haben. Der Status der Registrierung wird zugewiesen, und die Geräte-ID wird aufgelistet.

Führen Sie diese Befehle auf Ihrem Gerät aus, um zu überprüfen, ob IoT Edge installiert und ausgeführt wird.

Überprüfen Sie den Status des IoT Edge-Diensts.

sudo iotedge system status

Dienstprotokolle anzeigen.

sudo iotedge system logs

Führen Sie ausgeführte Module auf.

sudo iotedge list

Nächste Schritte

Mit dem Registrierungsprozess des Gerätebereitstellungsdiensts können Sie die Geräte-ID und die Geräte-Twin-Tags festlegen, wenn Sie ein neues Gerät bereitstellen. Verwenden Sie diese Werte, um einzelne Geräte oder Gerätegruppen mit automatischer Geräteverwaltung anzusprechen. Erfahren Sie, wie Sie IoT Edge-Module über das Azure-Portal oder mithilfe der Azure CLI bereitstellen und überwachen.