Erstellen und Bereitstellen eines IoT Edge für Linux unter Windows-Geräts mithilfe von X.509-Zertifikaten

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

Wichtig

IoT Edge 1.5 LTS und IoT Edge 1.4 sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

Dieser Artikel enthält vollständige Anleitungen zum Registrieren und Bereitstellen eines IoT Edge für Linux unter Windows-Geräts.

Jedes Gerät, das eine Verbindung mit einem IoT-Hub herstellt, verfügt über eine Geräte-ID, die zum Nachverfolgen der Cloud-zu-Gerät- oder Gerät-zu-Cloud-Kommunikation verwendet wird. Sie konfigurieren ein Gerät mit den Verbindungsinformationen, einschließlich des IoT Hub-Hostnamens, der Geräte-ID und der Informationen, die das Gerät zum Authentifizieren bei IoT Hub verwendet.

Die Schritte in diesem Artikel führen Sie durch die sogenannte manuelle Bereitstellung, bei der Sie ein einzelnes Gerät mit dem entsprechenden IoT-Hub verbinden. Bei der manuellen Bereitstellung haben Sie zwei Optionen zum Authentifizieren von IoT Edge-Geräten:

  • Symmetrische Schlüssel: Wenn Sie in IoT Hub eine neue Geräteidentität erstellen, erstellt der Dienst zwei Schlüssel. Ein Schlüssel befindet sich auf dem Gerät, den es bei der Authentifizierung in IoT Hub vorzeigt.

    Diese Authentifizierungsmethode kann schneller eingerichtet werden, ist dafür aber weniger sicher.

  • selbstsignierte X.509: Sie erstellen zwei X.509-Identitätszertifikate und bewahren diese auf dem Gerät auf. Wenn Sie in IoT Hub eine neue Geräteidentität erstellen, geben Sie Fingerabdrücke aus beiden Zertifikaten an. Wenn sich das Gerät bei IoT Hub authentifiziert, übergibt es ein Zertifikat, und IoT Hub überprüft, ob das Zertifikat mit dem Fingerabdruck übereinstimmt.

    Diese Authentifizierungsmethode ist sicherer und wird für Produktionsszenarios empfohlen.

In diesem Artikel wird die Verwendung von X.509-Zertifikaten als Authentifizierungsmethode behandelt. Wenn Sie symmetrische Schlüssel verwenden möchten, lesen Sie Erstellen und Bereitstellen eines IoT Edge für Linux unter Windows-Geräts mithilfe von symmetrischen Schlüsseln.

Hinweis

Wenn Sie viele Geräte einrichten müssen und sie nicht einzeln manuell bereitstellen möchten, informieren Sie sich in einem der folgenden Artikel, wie IoT Edge beim IoT Hub Device Provisioning Service (Gerätebereitstellungsdienst) funktioniert:

Voraussetzungen

In diesem Artikel wird beschrieben, wie Sie Ihr IoT Edge-Gerät registrieren und IoT Edge für Linux unter Windows installieren. Bei diesen Aufgaben gibt es unterschiedliche Voraussetzungen und Hilfsprogramme zu deren Erledigung. Stellen Sie sicher, dass alle Voraussetzungen erfüllt sind, bevor Sie fortfahren.

Geräteverwaltungstools

Sie können die Schritte zum Registrieren Ihres Geräts über das Azure-Portal, mithilfe von Visual Studio Code oder über die Azure CLI ausführen. Jedes Dienstprogramm hat seine eigenen Voraussetzungen oder muss möglicherweise installiert werden:

Ein IoT-Hub in Ihrem Azure-Abonnement im Tarif „Free“ oder „Standard“.

Geräteanforderungen

Ein Windows-Gerät mit den folgenden Mindestanforderungen:

  • Systemanforderungen

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 und Windows Server 2019 ab Build 17763 mit Installation aller aktuellen kumulativen Updates.
  • Hardwareanforderungen

    • Mindestens erforderlicher freier Arbeitsspeicher: 1 GB
    • Mindestens erforderlicher freier Speicherplatz: 10 GB
  • Virtualisierungsunterstützung

  • Netzwerkunterstützung

    • Windows Server umfasst keinen Standardswitch. Bevor Sie EFLOW auf einem Windows Server-Gerät bereitstellen können, müssen Sie einen virtuellen Switch erstellen. Weitere Informationen finden Sie unter Erstellen eines virtuellen Switches.
    • Windows Desktop-Versionen umfassen einen Standardswitch, der für die EFLOW-Installation verwendet werden kann. Bei Bedarf können Sie einen benutzerdefinierten virtuellen Switch erstellen.

Tipp

Wenn Sie GPU-beschleunigte Linux-Module in Ihrer Azure IoT Edge für Linux unter Windows-Bereitstellung verwenden möchten, gibt es mehrere Konfigurationsoptionen zu berücksichtigen.

Abhängig von Ihrer GPU-Architektur müssen Sie die richtigen Treiber installieren, und Sie benötigen möglicherweise Zugriff auf einen Windows-Insider-Build. Informationen zum Ermitteln Ihrer Konfigurationsanforderungen und zum Erfüllen dieser Voraussetzungen finden Sie unter GPU-Beschleunigung für Azure IoT Edge für Linux unter Windows.

Nehmen Sie sich jetzt die Zeit, die Voraussetzungen für die GPU-Beschleunigung zu erfüllen. Sie müssen den Installationsvorgang neu starten, wenn Sie sich während der Installation für die Verwendung der GPU-Beschleunigung entscheiden.

Entwicklertools

Bereiten Sie Ihr Zielgerät für die Installation von Azure IoT Edge für Linux unter Windows und die Bereitstellung des virtuellen Linux-Computers vor:

  1. Legen Sie die Ausführungsrichtlinie auf dem Zielgerät auf AllSigned fest. Sie können die aktuelle Ausführungsrichtlinie in einer PowerShell-Eingabeaufforderung mit erhöhten Rechten mit dem folgenden Befehl überprüfen:

    Get-ExecutionPolicy -List
    

    Wenn die Ausführungsrichtlinie von local machine nicht AllSigned ist, können Sie die Ausführungsrichtlinie wie folgt festlegen:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Weitere Informationen zum PowerShell-Modul „Azure IoT Edge für Linux unter Windows“ finden Sie in der PowerShell-Funktionsreferenz.

Generieren von Geräteidentitätszertifikaten

Die manuelle Bereitstellung mit X.509-Zertifikaten erfordert die IoT Edge-Version 1.0.10 oder höher.

Wenn Sie ein IoT Edge-Gerät mit X.509-Zertifikaten ausstatten, verwenden Sie ein so genanntes Geräteidentitätszertifikat. Dieses Zertifikat wird nur für die Bereitstellung eines IoT Edge-Geräts und die Authentifizierung des Geräts bei Azure IoT Hub verwendet. Es handelt sich um ein Blattzertifikat, das keine anderen Zertifikate signiert. Das Geräteidentitätszertifikat hängt nicht mit den Zertifikaten der Zertifizierungsstelle zusammen, die das IoT Edge-Gerät Modulen oder Downstreamgeräten zur Überprüfung präsentiert.

Bei der Authentifizierung mit einem X.509-Zertifikat werden die Informationen zur Authentifizierung der einzelnen Geräte in Form eines Fingerabdrucks bereitgestellt, der den Geräteidentitätszertifikaten entnommen wurde. Diese Fingerabdrücke werden IoT Hub zum Zeitpunkt der Geräteregistrierung bereitgestellt, damit der Dienst das Gerät erkennen kann, wenn es eine Verbindung herstellt.

Weitere Informationen zur Aufgabe der verschiedenen Zertifikate der Zertifizierungsstelle auf IoT Edge-Geräten finden Sie unter Grundlegendes zur Verwendung von Zertifikaten durch Azure IoT Edge.

Für die manuelle Bereitstellung mit X.509 ist Folgendes erforderlich:

  • Zwei Geräteidentitätszertifikate mit den dazugehörigen privaten Schlüsselzertifikaten in den Formaten .cer oder .pem. Sie benötigen zwei Geräteidentitätszertifikate für die Zertifikatsrotation. Eine bewährte Methode ist es, zwei verschiedene Geräteidentitätszertifikate mit unterschiedlichen Ablaufdaten zu erstellen. Wenn ein Zertifikat abläuft, ist das andere noch gültig und Sie haben Zeit, das abgelaufene Zertifikat zu ersetzen.

    Es wird ein Satz von Zertifikats- und Schlüsseldateien für die IoT Edge-Runtime bereitgestellt. Wenn Sie Geräteidentitätszertifikate erstellen, legen Sie den allgemeinen Namen (Common Name, CN) des Zertifikats auf die Geräte-ID fest, die das Gerät in Ihrem IoT-Hub haben soll.

  • Fingerabdrücke von beiden Geräteidentitätszertifikaten. IoT Hub erfordert bei der Registrierung eines IoT Edge-Geräts zwei Fingerabdrücke. Sie können für die Registrierung nur ein Zertifikat verwenden. Wenn Sie ein einziges Zertifikat verwenden möchten, legen Sie bei der Registrierung des Geräts denselben Zertifikatfingerabdruck für den primären und sekundären Fingerabdruck fest.

    Die Fingerabdruckwerte bestehen aus 40 Hexadezimalzeichen für SHA-1-Hashes oder 64 Hexadezimalzeichen für SHA-256-Hashes. Beide Fingerabdrücke werden zum Zeitpunkt der Geräteregistrierung für IoT Hub bereitgestellt.

    Der Fingerabdruck kann beispielsweise mithilfe des folgenden OpenSSL-Befehls aus einem Zertifikat abgerufen werden:

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

    Der Fingerabdruck ist in der Ausgabe dieses Befehls enthalten. Beispiel:

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

Sollten Sie über keine Zertifikate verfügen, können Sie Demozertifikate zum Testen von IoT Edge-Gerätefeatures erstellen. Folgen Sie den Anweisungen in diesem Artikel, um Skripte zur Zertifikatserstellung einzurichten, ein Stamm-CA-Zertifikat zu erstellen und ein IoT Edge-Geräteidentitätszertifikat zu erstellen. Zu Testzwecken können Sie ein einzelnes Geräteidentitätszertifikat erstellen und bei der Registrierung des Geräts in IoT Hub denselben Fingerabdruck für den primären und sekundären Fingerabdruck verwenden.

Registrieren Ihres Geräts

Je nach Präferenz können Sie Ihr Gerät über das Azure-Portal, mithilfe von Visual Studio Code oder über die Azure CLI registrieren.

In Ihrem IoT-Hub im Azure-Portal werden IoT Edge-Geräte getrennt von IoT-Geräten, die nicht Edge-fähig sind, erstellt und verwaltet.

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT Hub.

  2. Klicken Sie im linken Bereich auf Geräte, und klicken Sie dann auf Gerät hinzufügen.

  3. Geben Sie auf der Seite Gerät erstellen die folgenden Informationen ein:

    • Erstellen Sie eine eindeutige Geräte-ID. Notieren Sie sich diese Geräte-ID, da Sie sie später verwenden werden.
    • Aktivieren Sie das Kontrollkästchen IoT Edge-Gerät.
    • Wählen Sie als Authentifizierungstyp X.509, selbstsigniert aus.
    • Geben Sie die primären und sekundären Identitätszertifikatfingerabdrücke an. Die Fingerabdruckwerte bestehen aus 40 Hexadezimalzeichen für SHA-1-Hashes oder 64 Hexadezimalzeichen für SHA-256-Hashes. Das Azure-Portal unterstützt nur Hexadezimalwerte. Entfernen Sie Spaltentrennzeichen und Leerzeichen aus den Werten des Fingerabdrucks, bevor Sie sie in das Portal eingeben. Beispielsweise wird D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 als D268D9049F1A4D6AFD8477687BC633C032375112 eingegeben.

    Tipp

    Wenn Sie zu Testzwecken ein Zertifikat verwenden möchten, können Sie dasselbe Zertifikat für den primären und sekundären Fingerabdruck verwenden.

  4. Wählen Sie Speichern.

Nachdem Sie ein Gerät in IoT Hub registriert haben, rufen Sie die Informationen ab, mit der Sie die Installation und Bereitstellung der IoT Edge-Runtime abschließen.

Anzeigen registrierter Geräte und Abrufen von Bereitstellungsinformationen

Geräte, die die X.509-Zertifikatauthentifizierung verwenden, benötigen ihren IoT-Hub-Namen, ihren Gerätenamen und ihre Zertifikatdateien, um die Installation und Bereitstellung der Iot Edge-Runtime abzuschließen.

Die für die Verwendung mit Edge vorgesehenen Geräte, die eine Verbindung mit Ihrem IoT-Hub herstellen, sind auf der Seite Geräte aufgeführt. Sie können die Liste nach dem Gerätetyp IoT Edge-Geräte filtern.

Installieren von IoT Edge

Stellen Sie Azure IoT Edge für Linux unter Windows auf Ihrem Zielgerät bereit.

Hinweis

Das folgende PowerShell-Verfahren beschreibt, wie Sie IoT Edge für Linux unter Windows auf dem lokalen Gerät bereitstellen. Für die Bereitstellung auf einem Remotezielgerät mithilfe von PowerShell können Sie über Remote PowerShell eine Verbindung mit einem Remotegerät herstellen und diese Befehle remote auf dem Gerät ausführen.

  1. Führen Sie in einer erweiterten PowerShell-Sitzung je nach Architektur Ihres Zielgeräts einen der folgenden Befehle aus, um IoT Edge für Linux unter Windows herunterzuladen.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Installieren Sie IoT Edge für Linux unter Windows auf Ihrem Gerät.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Sie können benutzerdefinierte Installations- und VHDX-Verzeichnisse für IoT Edge für Linux unter Windows angeben, indem Sie dem Installationsbefehl die Parameter INSTALLDIR="<FULLY_QUALIFIED_PATH>" und VHDXDIR="<FULLY_QUALIFIED_PATH>" hinzufügen. Wenn Sie beispielsweise den Ordner D:\EFLOW für die Installation und D:\EFLOW-VHDX für das VHDX-Verzeichnis verwenden möchten, können Sie dazu das folgende PowerShell-Cmdlet verwenden.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Legen Sie die Ausführungsrichtlinie auf dem Zielgerät auf AllSigned fest, wenn dies noch nicht so eingestellt ist. In den PowerShell-Voraussetzungen finden Sie die Befehle, mit denen Sie die aktuelle Ausführungsrichtlinie überprüfen und auf AllSigned festlegen können.

  4. Erstellen Sie die Bereitstellung von IoT Edge für Linux unter Windows. Die Bereitstellung erstellt Ihren virtuellen Linux-Computer und installiert die IoT Edge Runtime automatisch.

    Deploy-Eflow
    

    Tipp

    Standardmäßig erstellt der Befehl Deploy-Eflow Ihren Linux-VM mit 1 GB RAM, 16 vCPU-Kern und 16 GB Speicherplatz. Die Ressourcen, die Ihr VM benötigt, sind jedoch stark von den Workloads abhängig, die Sie bereitstellen. Wenn Ihr VM nicht über genügend Arbeitsspeicher verfügt, um Ihre Workloads zu unterstützen, kann er nicht gestartet werden.

    Sie können die verfügbaren Ressourcen des VM mithilfe der optionalen Parameter des Befehls Deploy-Eflow anpassen. Dies ist erforderlich, um EFLOW auf einem Gerät mit den Mindesthardwareanforderungen bereitzustellen.

    Mit dem folgenden Befehl beispielsweise wird eine VM mit 1 vCPU-Kern, 1 GB RAM (angegeben in MB) und 2 GB Speicherplatz erstellt:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Informationen zu allen verfügbaren optionalen Parametern finden Sie unter PowerShell-Funktionen für IoT Edge für Linux unter Windows.

    Warnung

    Standardmäßig hat der virtuelle EFLOW-Linux-Computer keine DNS-Konfiguration. Bei Bereitstellungen mit dem DHCP wird versucht, die vom DHCP-Server weitergegebene DNS-Konfiguration abzurufen. Überprüfen Sie Ihre DNS-Konfiguration, um die Internetkonnektivität sicherzustellen. Weitere Informationen finden Sie unter AzEFLOW-DNS.

    Sie können Ihrer Bereitstellung eine GPU zuweisen, um GPU-beschleunigte Linux-Module zu aktivieren. Um Zugriff auf diese Features zu erhalten, müssen Sie die erforderlichen Komponenten installieren, die unter GPU-Beschleunigung für Azure IoT Edge für Linux unter Windows aufgeführt werden.

    Wenn Sie GPU-Passthrough verwenden möchten, müssen Sie Ihrem Befehl Deploy-Eflow die Parameter gpuName, gpuPassthroughType und gpuCount hinzufügen. Informationen zu allen verfügbaren optionalen Parametern finden Sie unter PowerShell-Funktionen für IoT Edge für Linux unter Windows.

    Warnung

    Das Aktivieren von Hardwaregeräte-Passthrough kann zu einem erhöhten Sicherheitsrisiko führen. Microsoft empfiehlt zur Risikominderung die Installation eines Gerätetreibers, den Sie vom Anbieter Ihrer GPU erhalten. Weitere Informationen finden Sie unter Bereitstellen von Grafikgeräten mit Discrete Device Assignment.

  5. Geben Sie „Y“ ein, um den Lizenzbedingungen zuzustimmen.

  6. Durch die Eingabe von „O“ oder „R“ können Sie Optionale Diagnosedaten bei Bedarf ein- oder ausschalten.

  7. Sobald die Bereitstellung abgeschlossen ist, meldet das PowerShell-Fenster Bereitstellung erfolgreich.

    Bei einer erfolgreichen Bereitstellung wird am Ende der Meldungen „Bereitstellung erfolgreich“ angezeigt (PNG).

    Nach einer erfolgreichen Bereitstellung können Sie Ihr Gerät bereitstellen.

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

Sie können Ihr Gerät mit den zugehörigen Cloudidentitäts- und Authentifizierungsinformationen einrichten.

Um Ihr Gerät mithilfe von X.509-Zertifikaten bereitstellen zu können, benötigen Sie Ihren IoT Hub-Namen, die Geräte-ID und die absoluten Pfade zu Ihrem Identitätszertifikat sowie private Schlüssel auf Ihrem Windows-Hostcomputer.

Halten Sie das Geräteidentitätszertifikat und den zugehörigen privaten Schlüssel für Ihr Zielgerät bereit. Sie müssen den absoluten Pfad zu beiden Dateien kennen.

Führen Sie den folgenden Befehl mit erhöhten Rechten in einer PowerShell-Sitzung auf Ihrem Zielgerät aus. Ersetzen Sie den Platzhaltertext durch Ihre eigenen Werte.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Weitere Informationen zum Befehl Provision-EflowVM finden Sie unter PowerShell-Funktionen für IoT Edge für Linux unter Windows.

Überprüfen der erfolgreichen Konfiguration

Vergewissern Sie sich, dass IoT Edge für Linux unter Windows erfolgreich auf Ihrem IoT Edge-Gerät installiert und konfiguriert wurde.

  1. Melden Sie sich mithilfe des folgenden Befehls in Ihrer PowerShell-Sitzung bei Ihrem virtuellen IoT Edge für Linux-Computer unter Windows an.

    Connect-EflowVm
    

    Hinweis

    Das einzige Konto, das zum Herstellen eines SSH mit dem virtuellen Computer zulässig ist, ist der Benutzer, der es erstellt.

  2. Sobald Sie angemeldet sind, können Sie die Liste der laufenden IoT Edge-Module mithilfe des folgenden Linux-Befehls überprüfen:

    sudo iotedge list
    
  3. Wenn Sie eine Problembehandlung für den IoT Edge-Dienst durchführen müssen, verwenden Sie die folgenden Linux-Befehle.

    1. Rufen Sie die Dienstprotokolle ab.

      sudo iotedge system logs
      
    2. Verwenden Sie das Tool check, um die Konfiguration und den Verbindungsstatus des Geräts zu überprüfen.

      sudo iotedge check
      

    Hinweis

    Auf einem neu bereitgestellten Gerät wird möglicherweise ein Fehler im Zusammenhang mit dem IoT Edge-Hub angezeigt:

    × Produktionsbereitschaft: Das Speicherverzeichnis des Edge-Hubs wird im Hostdateisystem beibehalten – Fehler.

    Der aktuelle Zustand des edgeHub-Containers konnte nicht überprüft werden.

    Dieser Fehler wird auf einem neu bereitgestellten Gerät erwartet, da das IoT Edge-Hubmodul nicht ausgeführt wird. Um den Fehler zu beheben, legen Sie in IoT Hub die Module für das Gerät fest, und erstellen Sie eine Bereitstellung. Durch das Erstellen einer Bereitstellung für das Gerät werden die Module auf dem Gerät gestartet, einschließlich des IoT Edge-Hubmoduls.

Wenn Sie ein neues IoT Edge Gerät erstellen, wird es im Azure-Portal mit dem Statuscode 417 -- The device's deployment configuration is not set angezeigt. Dieser Status ist normal und bedeutet, dass das Gerät bereit ist, eine Modulbereitstellung zu empfangen.

Deinstallieren von IoT Edge für Linux unter Windows

Wenn Sie die Installation von Azure IoT Edge für Linux unter Windows von Ihrem Gerät entfernen möchten, verwenden Sie die folgenden Befehle:

  1. Öffnen Sie die Einstellungen unter Windows.
  2. Wählen Sie „Programme hinzufügen oder entfernen“ aus.
  3. Wählen Sie die App Azure IoT Edge aus.
  4. Wählen Sie „Deinstallieren“ aus.

Nächste Schritte