Schnellstart: Bereitstellen eines simulierten TPM-Geräts

In dieser Schnellstartanleitung erstellen Sie ein simuliertes Gerät auf Ihrem Windows-Computer. Das simulierte Gerät wird für die Verwendung eines TPM-Nachweismechanismus (Trusted Platform Module) für die Authentifizierung konfiguriert. Nachdem Sie Ihr Gerät konfiguriert haben, stellen Sie es mithilfe des Azure IoT Hub Device Provisioning Service für Ihren IoT-Hub bereit. Anschließend wird Beispielcode verwendet, um das Gerät bei einer Device Provisioning Service-Instanz zu registrieren.

Wenn Sie mit dem Prozess der Bereitstellung noch nicht vertraut sind, sollten Sie zunächst die Übersicht zur Bereitstellung lesen. Vergewissern Sie sich außerdem, dass Sie die Schritte unter Einrichten des IoT Hub Device Provisioning-Diensts über das Azure-Portal ausgeführt haben, bevor Sie fortfahren.

In Azure IoT Device Provisioning Service werden zwei Registrierungsarten unterstützt:

In diesem Artikel werden individuelle Registrierungen veranschaulicht.

Der Nachweis des Trusted Platform Module (TPM) wird im Python SDK nicht unterstützt. Mit Python können Sie ein Gerät mit symmetrischen Schlüsseln order X.509-Zertifikaten bereitstellen.

Voraussetzungen

Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.

  • Ein TPM 2.0-Hardwaresicherheitsmodul auf Ihrem Windows-Computer.

  • Installieren Sie das .NET Core SDK 6.0 oder höher auf Ihrem Windows-Computer. Sie können den folgenden Befehl ausführen, um Ihre Version zu überprüfen:

    dotnet --info
    
  • Installieren Sie die aktuelle Version von Git. Stellen Sie sicher, dass Git den Umgebungsvariablen hinzugefügt wurde, auf die das Befehlsfenster Zugriff hat. Unter den Git-Clienttools von Software Freedom Conservancy finden Sie die neueste Version der zu installierenden git-Tools. Hierzu zählt auch die Befehlszeilen-App Git Bash, über die Sie mit Ihrem lokalen Git-Repository interagieren können.

Vorbereiten Ihrer Entwicklungsumgebung

In diesem Abschnitt bereiten Sie eine Entwicklungsumgebung vor, die zum Erstellen des Azure IoT C SDK und des Beispiels für den TPM-Gerätesimulator verwendet wird.

  1. Laden Sie das neueste CMake-Buildsystem herunter.

    Wichtig

    Vergewissern Sie sich vor Beginn der Installation von CMake, dass die erforderlichen Visual Studio-Komponenten (Visual Studio und die Workload „Desktopentwicklung mit C++“) auf dem Computer installiert sind. Sobald die Voraussetzungen erfüllt sind und der Download überprüft wurde, installieren Sie das CMake-Buildsystem. Beachten Sie auch, dass ältere Versionen des CMake-Buildsystems die in diesem Artikel verwendete Projektmappendatei nicht generieren können. Stellen Sie sicher, dass Sie die neueste Version von CMake verwenden.

  2. Öffnen Sie einen Webbrowser, und wechseln Sie zur Releaseseite für das Azure IoT C SDK.

  3. Wählen Sie oben auf der Seite die Registerkarte Tags aus.

  4. Kopieren Sie den Tagnamen für das aktuelle Release des Azure IoT C SDK.

  5. Öffnen Sie eine Eingabeaufforderung oder die Git Bash-Shell. Führen Sie die folgenden Befehle aus, um das aktuelle Release des GitHub-Repositorys für das Azure IoT Device SDK für C zu klonen. Ersetzen Sie <release-tag> durch das Tag, das Sie im vorherigen Schritt kopiert haben. Beispiel: lts_01_2023.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Dieser Vorgang kann mehrere Minuten dauern.

  6. Führen Sie nach Abschluss des Vorgangs die folgenden Befehle aus dem Verzeichnis azure-iot-sdk-c aus:

    mkdir cmake
    cd cmake
    
  1. Öffnen Sie eine Git CMD- oder Git Bash-Befehlszeilenumgebung.

  2. Klonen Sie mit dem folgenden Befehl das GitHub-Repository mit dem Azure IoT SDK für C#:

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Öffnen Sie eine Git CMD- oder Git Bash-Befehlszeilenumgebung.

  2. Klonen Sie mit dem folgenden Befehl das GitHub-Repository azure-utpm-c:

    git clone https://github.com/Azure/azure-utpm-c.git --recursive
    
  1. Öffnen Sie eine Git CMD- oder Git Bash-Befehlszeilenumgebung.

  2. Klonen Sie mit dem folgenden Befehl das GitHub-Repository für Java:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    

Erstellen und Ausführen des TPM-Gerätesimulators

In diesem Abschnitt erstellen Sie den TPM-Simulator und führen ihn aus. Dieser Simulator lauscht über einen Socket an den Ports 2321 und 2322. Lassen Sie das Befehlsfenster geöffnet. Dieser Simulator muss bis zum Ende der Schnellstartanleitung ausgeführt werden.

  1. Führen Sie den folgenden Befehl aus, um das Azure IoT C SDK zu erstellen, das den Beispielcode für den TPM-Gerätesimulator enthält. Im cmake-Verzeichnis wird eine Visual Studio-Projektmappe für das simulierte Gerät generiert. Dieses Beispiel stellt einen TPM-Nachweismechanismus über SAS-Tokenauthentifizierung (Shared Access Signature) bereit.

    cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    

    Tipp

    Falls cmake Ihren C++-Compiler nicht findet, treten beim Ausführen des obigen Befehls unter Umständen Buildfehler auf. Führen Sie den Befehl in diesem Fall an der Visual Studio-Eingabeaufforderung aus.

  2. Nach einer erfolgreichen Erstellung ähneln die letzten Ausgabezeilen der folgenden Ausgabe:

    $ cmake -Duse_prov_client:BOOL=ON ..
    -- Building for: Visual Studio 16 2019
    -- The C compiler identification is MSVC 19.23.28107.0
    -- The CXX compiler identification is MSVC 19.23.28107.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/code/azure-iot-sdk-c/cmake
    
  3. Navigieren Sie zum Stammordner des von Ihnen geklonten Git-Repositorys.

  4. Führen Sie den TPM-Simulator aus, indem Sie den unten angegebenen Pfad verwenden.

    cd ..
    .\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
    

    Im Simulator wird keine Ausgabe angezeigt. Setzen Sie die Ausführung fort, da hiermit ein TPM-Gerät simuliert wird.

  1. Navigieren Sie zum GitHub-Stammordner.

  2. Führen Sie den TPM-Simulator aus, damit er als HSM für das simulierte Gerät verwendet wird.

    .\azure-utpm-c\tools\tpm_simulator\Simulator.exe
    
  3. Erstellen Sie einen neuen leeren Ordner namens registerdevice. Erstellen Sie im Ordner registerdevice die Datei package.json, indem Sie an der Eingabeaufforderung den folgenden Befehl verwenden (hierbei alle von npm gestellten Fragen beantworten oder ggf. Standardwerte übernehmen):

    npm init
    
  4. Installieren Sie die folgenden Vorstufenpakete:

    npm install node-gyp -g
    npm install ffi-napi -g
    

    Hinweis

    Die Installation der obigen Pakete kann zu einigen bekannten Problemen führen. Um diese Probleme zu beheben, führen Sie an einer Eingabeaufforderung npm install --global --production windows-build-tools im Modus Als Administrator ausführen aus. Führen Sie SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140 aus, nachdem Sie den Pfad durch Ihre installierte Version ersetzt haben, und führen Sie anschließend die obigen Installationsbefehle erneut aus.

  5. Installieren Sie alle erforderlichen Pakete, indem Sie an der Eingabeaufforderung im Ordner registerdevice den folgenden Befehl ausführen:

    npm install --save azure-iot-device azure-iot-device-mqtt azure-iot-security-tpm azure-iot-provisioning-device-http azure-iot-provisioning-device
    

    Mit dem Befehl werden die folgenden Pakete installiert:

    • Ein für TPM geeigneter Sicherheitsclient: azure-iot-security-tpm

    • Eine Transportkomponente für das Gerät, um eine Verbindung mit dem Gerätebereitstellungsdienst herzustellen: azure-iot-provisioning-device-http oder azure-iot-provisioning-device-amqp

    • Ein Client zur Verwendung der Transportkomponente und des Sicherheitsclients: azure-iot-provisioning-device

    • Der Geräteclient: azure-iot-device

    • Eine Transportkomponente: azure-iot-device-amqp, azure-iot-device-mqtt oder azure-iot-device-http

    • Der bereits installierte Sicherheitsclient: azure-iot-security-tpm

      Hinweis

      Für die Beispiele in dieser Schnellstartanleitung werden die Transportkomponenten azure-iot-provisioning-device-http und azure-iot-device-mqtt verwendet.

  6. Öffnen Sie einen Text-Editor Ihrer Wahl.

  7. Erstellen Sie im Ordner registerdevice die neue Datei ExtractDevice.js.

  8. Fügen Sie am Anfang der Datei ExtractDevice.js die folgenden require-Anweisungen hinzu:

    
    'use strict';
    
    var tpmSecurity = require('azure-iot-security-tpm');
    var tssJs = require("tss.js");
    
    var myTpm = new tpmSecurity.TpmSecurityClient(undefined, new tssJs.Tpm(true));
    
  9. Fügen Sie die folgende Funktion hinzu, um die Methode zu implementieren:

    
    myTpm.getEndorsementKey(function(err, endorsementKey) {
      if (err) {
        console.log('The error returned from get key is: ' + err);
      } else {
        console.log('the endorsement key is: ' + endorsementKey.toString('base64'));
        myTpm.getRegistrationId((getRegistrationIdError, registrationId) => {
          if (getRegistrationIdError) {
            console.log('The error returned from get registration id is: ' + getRegistrationIdError);
          } else {
            console.log('The Registration Id is: ' + registrationId);
            process.exit();
          }
        });
      }
    });
    
  10. Speichern und schließen Sie die Datei ExtractDevice.js.

    node ExtractDevice.js
    
  11. Führen Sie das Beispiel aus.

  12. Im Ausgabefenster werden der Endorsement Key und die Registrierungs-ID für die Geräteregistrierung angezeigt. Kopieren Sie diese Werte.

  1. Führen Sie den TPM-Simulator aus, damit er als HSM für das simulierte Gerät verwendet wird.

  2. Wählen Sie Zugriff gestatten aus. Der Simulator lauscht über einen Socket an den Ports 2321 und 2322. Lassen Sie das Befehlsfenster geöffnet. Sie benötigen es, um den Simulator bis zum Ende dieses Schnellstarts auszuführen.

    .\azure-iot-sdk-java\provisioning\provisioning-tools\tpm-simulator\Simulator.exe
    

    TPM Simulator

  3. Öffnen Sie eine zweite Eingabeaufforderung.

  4. Navigieren Sie an der zweiten Eingabeaufforderung zum Stammordner, und erstellen Sie die Beispielabhängigkeiten.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    
  5. Navigieren Sie zum Beispielordner.

    cd provisioning/provisioning-samples/provisioning-tpm-sample
    

Lesen kryptografischer Schlüssel vom TPM-Gerät

In diesem Abschnitt erstellen Sie ein Beispiel, bei dem der Endorsement Key und die Registrierungs-ID aus dem ausgeführten TPM-Simulator gelesen werden. Sie führen das Beispiel aus, und es wird weiterhin über die Ports 2321 und 2322 gelauscht. Diese Werte werden für die Geräteregistrierung bei Ihrer Instanz des Device Provisioning-Diensts verwendet.

  1. Starten Sie Visual Studio.

  2. Öffnen Sie die Projektmappe azure_iot_sdks.sln, die im Ordner cmake generiert wurde.

  3. Wählen Sie im Visual Studio-Menü die Option Erstellen>Projektmappe erstellen aus, um alle Projekte in der Projektmappe zu erstellen.

  4. Navigieren Sie im Visual Studio-Fenster Projektmappen-Explorer zum Ordner Provision_Tools. Klicken Sie mit der rechten Maustaste auf das Projekt tpm_device_provision, und wählen Sie Als Startprojekt festlegen aus.

  5. Wählen Sie im Visual Studio-Menü die Option Debuggen>Starten ohne Debugging aus, um die Projektmappe auszuführen. Die App liest eine Registrierungs-ID und einen Endorsement Key und zeigt diese an. Notieren oder kopieren Sie diese Werte. Sie werden im nächsten Abschnitt für die Geräteregistrierung verwendet.

  1. Melden Sie sich beim Azure-Portal an, wählen Sie im Menü links die Schaltfläche Alle Ressourcen aus, und öffnen Sie Ihre Device Provisioning Service-Instanz. Notieren Sie sich den ID-Bereich und den globalen Endpunkt für den Bereitstellungsdienst.

    Device Provisioning Service information

  2. Bearbeiten Sie src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java, um die zuvor notierten Werte für den ID-Bereich und den globalen Endpunkt für den Bereitstellungsdienst einzufügen.

    private static final String idScope = "[Your ID scope here]";
    private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
    private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
    
  3. Speichern Sie die Datei .

  4. Erstellen Sie das Projekt mit den folgenden Befehlen, navigieren Sie zum Zielordner, und führen Sie die erstellte JAR-Datei aus (ersetzen Sie {version} durch Ihre Java-Version):

    mvn clean install
    cd target
    java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
    
  5. Wenn die Ausführung des Programms beginnt, werden der Endorsement Key und die Registrierungs-ID angezeigt. Kopieren Sie diese Werte für den nächsten Abschnitt. Achten Sie darauf, dass das Programm weiter ausgeführt wird.

In diesem Abschnitt erstellen und führen Sie ein Beispiel aus, das den Endorsement Key aus Ihrem TPM 2.0-Hardwaresicherheitsmodul liest. Dieser Wert wird für die Geräteregistrierung bei Ihrer Device Provisioning Service-Instanz verwendet.

  1. Wechseln Sie an einer Eingabeaufforderung zum Projektverzeichnis für das TPM-Gerätebereitstellungsbeispiel.

    cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  2. Geben Sie den folgenden Befehl ein, um das TPM-Gerätebereitstellungsbeispiel zu erstellen und auszuführen. Kopieren Sie den Endorsement Key, der von Ihrem TPM 2.0-Hardwaresicherheitsmodul zurückgegeben wurde, um ihn später bei der Registrierung Ihres Geräts zu verwenden.

    dotnet run -- -e
    

Erstellen eines Geräteregistrierungseintrags

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zur Dienstinstanz für die Gerätebereitstellung.

  2. Wählen Sie im Navigationsmenü im Abschnitt Einstellungen die Option Registrierungen verwalten aus.

  3. Wählen Sie die Registerkarte Individuelle Registrierungen und dann Individuelle Registrierung hinzufügen aus.

    Screenshot that shows the add individual enrollment option.

  4. Geben Sie unter Registrierung und Bereitstellung der Seite Registrierung hinzufügen die folgenden Informationen an, um die Registrierungsdetails zu konfigurieren:

    Feld Beschreibung
    Nachweis Wählen Sie Trusted Platform Module (TPM) als Nachweismechanismus aus.
    Einstellungen für das Trusted Platform Module (TPM) Geben Sie den Endorsement Key an, der zum Überprüfen des Geräts für diese Registrierung verwendet wird. Sie können den Endorsement Key aus dem TPM Ihres Geräts abrufen.
    Registrierungs-ID Geben Sie die eindeutige Registrierungs-ID für das Gerät an. Sie können die Registrierungs-ID aus dem TPM Ihres Geräts abrufen.
    Bereitstellungsstatus Aktivieren Sie das Kontrollkästchen Diese Registrierung aktivieren, wenn diese Registrierung für die Bereitstellung des Geräts verfügbar sein soll. Deaktivieren Sie dieses Kontrollkästchen, wenn die Registrierung deaktiviert werden soll. Sie können diese Einstellung später ändern.
    Richtlinie für die erneute Bereitstellung Wählen Sie eine Richtlinie für die erneute Bereitstellung aus, die angibt, wie DPS Geräte, die eine erneute Bereitstellung anfordern, handhaben soll. Weitere Informationen finden Sie unter Richtlinien für die erneute Bereitstellung.
  5. Wählen Sie Weiter: IoT-Hubs aus.

  6. Geben Sie auf der Registerkarte IoT-Hubs der Seite Registrierung hinzufügen die folgenden Informationen an, um zu bestimmen, für welche IoT-Hubs die Registrierung Geräte bereitstellen kann:

    Feld Beschreibung
    Ziel-IoT-Hubs Wählen Sie einen oder mehrere Ihrer verknüpften IoT-Hubs aus, oder fügen Sie einem IoT-Hub einen neuen Link hinzu. Weitere Informationen zum Verknüpfen von IoT-Hubs mit Ihrer DPS-Instanz finden Sie unter Verknüpfen und Verwalten von IoT-Hubs.
    Zuordnungsrichtlinie Wenn Sie mehrere verknüpfte IoT-Hubs ausgewählt haben, wählen Sie aus, wie Sie den verschiedenen Hubs Geräte zuweisen möchten. Weitere Informationen zu Zuordnungsrichtlinien finden Sie unter Verwenden von Zuordnungsrichtlinien.

    Wenn Sie nur einen verknüpften IoT-Hub ausgewählt haben, empfehlen wir die Verwendung der Richtlinie Gleichmäßig gewichtete Verteilung.
  7. Wählen Sie Weiter: Geräteeinstellungen aus

  8. Geben Sie auf der Registerkarte Geräteeinstellungen der Seite Registrierung hinzufügen die folgenden Informationen an, um zu definieren, wie neu bereitgestellte Geräte konfiguriert werden sollen:

    Feld Beschreibung
    Geräte-ID Geben Sie eine Geräte-ID an, die dem bereitgestellten Gerät im IoT-Hub zugewiesen wird. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet.
    IoT Edge Aktivieren Sie das Kontrollkästchen IoT Edge auf bereitgestellten Geräten aktivieren, wenn auf dem bereitgestellten Gerät Azure IoT Edge ausgeführt wird. Deaktivieren Sie dieses Kontrollkästchen, wenn diese Registrierung für ein Gerät ohne IoT Edge aktiviert ist.
    Gerätetags Verwenden Sie dieses Textfeld, um alle Tags anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten.
    Gewünschte Eigenschaften Verwenden Sie dieses Textfeld, um alle gewünschten Eigenschaften anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten.

    Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.

  9. Klicken Sie auf Weiter: Überprüfen + erstellen.

  10. Überprüfen Sie auf der Registerkarte Überprüfen und erstellen all Ihre Werte, und wählen Sie dann Erstellen aus.

Das C#-TPM-Beispiel für diese Schnellstartanleitung enthält keine Registrierungs-ID. Wenn Sie aufgefordert werden, eins für die einzelne Registrierung hinzuzufügen, geben Sie Ihren eigenen Wert an.

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zur Dienstinstanz für die Gerätebereitstellung.

  2. Wählen Sie im Navigationsmenü im Abschnitt Einstellungen die Option Registrierungen verwalten aus.

  3. Wählen Sie die Registerkarte Individuelle Registrierungen und dann Individuelle Registrierung hinzufügen aus.

    Screenshot that shows the add individual enrollment option.

  4. Geben Sie unter Registrierung und Bereitstellung der Seite Registrierung hinzufügen die folgenden Informationen an, um die Registrierungsdetails zu konfigurieren:

    Feld Beschreibung
    Nachweis Wählen Sie Trusted Platform Module (TPM) als Nachweismechanismus aus.
    Einstellungen für das Trusted Platform Module (TPM) Geben Sie den Endorsement Key an, der zum Überprüfen des Geräts für diese Registrierung verwendet wird. Sie können den Endorsement Key aus dem TPM Ihres Geräts abrufen.
    Registrierungs-ID Geben Sie die eindeutige Registrierungs-ID für das Gerät an. Sie können die Registrierungs-ID aus dem TPM Ihres Geräts abrufen.
    Bereitstellungsstatus Aktivieren Sie das Kontrollkästchen Diese Registrierung aktivieren, wenn diese Registrierung für die Bereitstellung des Geräts verfügbar sein soll. Deaktivieren Sie dieses Kontrollkästchen, wenn die Registrierung deaktiviert werden soll. Sie können diese Einstellung später ändern.
    Richtlinie für die erneute Bereitstellung Wählen Sie eine Richtlinie für die erneute Bereitstellung aus, die angibt, wie DPS Geräte, die eine erneute Bereitstellung anfordern, handhaben soll. Weitere Informationen finden Sie unter Richtlinien für die erneute Bereitstellung.
  5. Wählen Sie Weiter: IoT-Hubs aus.

  6. Geben Sie auf der Registerkarte IoT-Hubs der Seite Registrierung hinzufügen die folgenden Informationen an, um zu bestimmen, für welche IoT-Hubs die Registrierung Geräte bereitstellen kann:

    Feld Beschreibung
    Ziel-IoT-Hubs Wählen Sie einen oder mehrere Ihrer verknüpften IoT-Hubs aus, oder fügen Sie einem IoT-Hub einen neuen Link hinzu. Weitere Informationen zum Verknüpfen von IoT-Hubs mit Ihrer DPS-Instanz finden Sie unter Verknüpfen und Verwalten von IoT-Hubs.
    Zuordnungsrichtlinie Wenn Sie mehrere verknüpfte IoT-Hubs ausgewählt haben, wählen Sie aus, wie Sie den verschiedenen Hubs Geräte zuweisen möchten. Weitere Informationen zu Zuordnungsrichtlinien finden Sie unter Verwenden von Zuordnungsrichtlinien.

    Wenn Sie nur einen verknüpften IoT-Hub ausgewählt haben, empfehlen wir die Verwendung der Richtlinie Gleichmäßig gewichtete Verteilung.
  7. Wählen Sie Weiter: Geräteeinstellungen aus

  8. Geben Sie auf der Registerkarte Geräteeinstellungen der Seite Registrierung hinzufügen die folgenden Informationen an, um zu definieren, wie neu bereitgestellte Geräte konfiguriert werden sollen:

    Feld Beschreibung
    Geräte-ID Geben Sie eine Geräte-ID an, die dem bereitgestellten Gerät im IoT-Hub zugewiesen wird. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet.
    IoT Edge Aktivieren Sie das Kontrollkästchen IoT Edge auf bereitgestellten Geräten aktivieren, wenn auf dem bereitgestellten Gerät Azure IoT Edge ausgeführt wird. Deaktivieren Sie dieses Kontrollkästchen, wenn diese Registrierung für ein Gerät ohne IoT Edge aktiviert ist.
    Gerätetags Verwenden Sie dieses Textfeld, um alle Tags anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten.
    Gewünschte Eigenschaften Verwenden Sie dieses Textfeld, um alle gewünschten Eigenschaften anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten.

    Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.

  9. Klicken Sie auf Weiter: Überprüfen + erstellen.

  10. Überprüfen Sie auf der Registerkarte Überprüfen und erstellen all Ihre Werte, und wählen Sie dann Erstellen aus.

Registrieren des Geräts

In diesem Abschnitt konfigurieren Sie Beispielcode zum Verwenden des Advanced Message Queuing Protocol (AMQP), um die Startsequenz des Geräts an Ihre Device Provisioning Service-Instanz zu senden. Diese Startsequenz bewirkt, dass das Gerät bei einem IoT-Hub registriert wird, der mit der Device Provisioning Service-Instanz verknüpft ist.

  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz aus.

  2. Kopieren Sie den Wert von ID-Bereich.

    Extract Device Provisioning Service endpoint information from the portal

  3. Navigieren Sie im Visual Studio-Fenster Projektmappen-Explorer zum Ordner Provision_Samples. Erweitern Sie das Beispielprojekt prov_dev_client_sample. Erweitern Sie Quelldateien, und öffnen Sie prov_dev_client_sample.c.

  4. Suchen Sie im oberen Bereich der Datei die #define-Anweisungen für jedes Geräteprotokoll, wie unten dargestellt. Stellen Sie sicher, dass nur SAMPLE_AMQP auskommentiert wurde.

    Zurzeit wird das MQTT-Protokoll für die individuelle TPM-Registrierung nicht unterstützt.

    //
    // The protocol you wish to use should be uncommented
    //
    //#define SAMPLE_MQTT
    //#define SAMPLE_MQTT_OVER_WEBSOCKETS
    #define SAMPLE_AMQP
    //#define SAMPLE_AMQP_OVER_WEBSOCKETS
    //#define SAMPLE_HTTP
    
  5. Suchen Sie die Konstante id_scope, und ersetzen Sie den Wert durch Ihren ID-Bereich-Wert, den Sie zuvor kopiert haben.

    static const char* id_scope = "0ne00002193";
    
  6. Suchen Sie die Definition für die Funktion main() in der gleichen Datei. Stellen Sie sicher, dass die Variable hsm_type wie unten dargestellt auf SECURE_DEVICE_TYPE_TPM festgelegt ist.

    SECURE_DEVICE_TYPE hsm_type;
    hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Klicken Sie mit der rechten Maustaste auf das Projekt prov_dev_client_sample, und wählen Sie Als Startprojekt festlegen aus.

  8. Wählen Sie im Visual Studio-Menü die Option Debuggen>Starten ohne Debugging aus, um die Projektmappe auszuführen. Wählen Sie in der Aufforderung zum erneuten Erstellen des Projekts Ja aus, um das Projekt vor der Ausführung neu zu erstellen.

    Die folgende Ausgabe ist ein Beispiel dafür, wie der Gerätebereitstellungsclient erfolgreich hochfährt und sich mit einer Instanz des Device Provisioning-Diensts verbindet, um IoT Hub-Informationen zu erhalten und sich zu registrieren:

    Provisioning API Version: 1.2.7
    
    Registering... Press enter key to interrupt.
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service:
    test-docs-hub.azure-devices.net, deviceId: test-docs-cert-device
    
  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz aus.

  2. Kopieren Sie den Wert von ID-Bereich.

    Copy provisioning service Scope ID from the portal blade

  3. Wechseln Sie an einer Eingabeaufforderung zum Projektverzeichnis für das TPM-Gerätebereitstellungsbeispiel.

     cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
    
  4. Führen Sie den folgenden Befehl aus, um Ihr Gerät zu registrieren: Ersetzen Sie <IdScope> durch den Wert für den kopierten DPS und <RegistrationId> durch den Wert, den Sie beim Erstellen der Geräteregistrierung verwendet haben.

    dotnet run -- -s <IdScope> -r <RegistrationId>
    

    Wenn die Geräteregistrierung erfolgreich war, werden die folgenden Meldungen angezeigt:

    Initializing security using the local TPM...
    Initializing the device provisioning client...
    Initialized for registration Id <RegistrationId>.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device <RegistrationId> registered to <HubName>.azure-devices.net.
    Creating TPM authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    
  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz aus.

  2. Kopieren Sie den Wert von ID-Bereich.

    Extract Device Provisioning Service endpoint information from the portal blade

  3. Öffnen Sie einen Text-Editor Ihrer Wahl.

  4. Erstellen Sie im Ordner registerdevice die neue Datei RegisterDevice.js.

  5. Fügen Sie am Anfang der Datei RegisterDevice.js die folgenden require-Anweisungen hinzu:

    
    'use strict';
    
    var ProvisioningTransport = require('azure-iot-provisioning-device-http').Http;
    var iotHubTransport = require('azure-iot-device-mqtt').Mqtt;
    var Client = require('azure-iot-device').Client;
    var Message = require('azure-iot-device').Message;
    var tpmSecurity = require('azure-iot-security-tpm');
    var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;
    

    Hinweis

    Das Azure IoT SDK für Node.js unterstützt weitere Protokolle wie etwa AMQP, AMQP WS und MQTT WS. Weitere Beispiele finden Sie unter Samples for the Azure IoT Device Provisioning Device SDK for Node.js (Beispiele für das Azure IoT Device Provisioning Device SDK für Node.js).

  6. Fügen Sie die Variablen globalDeviceEndpoint und idScope hinzu, und verwenden Sie sie zum Erstellen einer Instanz von ProvisioningDeviceClient. Ersetzen Sie {globalDeviceEndpoint} und {idScope} durch die Werte für Globaler Geräteendpunkt und ID-Bereich aus Schritt 1:

    
    var provisioningHost = '{globalDeviceEndpoint}';
    var idScope = '{idScope}';
    
    var tssJs = require("tss.js");
    var securityClient = new tpmSecurity.TpmSecurityClient('', new tssJs.Tpm(true));
    // if using non-simulated device, replace the above line with following:
    //var securityClient = new tpmSecurity.TpmSecurityClient();
    
    var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), securityClient);
    
  7. Fügen Sie die folgende Funktion hinzu, um die Methode auf dem Gerät zu implementieren:

    
    provisioningClient.register(function(err, result) {
      if (err) {
        console.log("error registering device: " + err);
      } else {
        console.log('registration succeeded');
        console.log('assigned hub=' + result.registrationState.assignedHub);
        console.log('deviceId=' + result.registrationState.deviceId);
        var tpmAuthenticationProvider = tpmSecurity.TpmAuthenticationProvider.fromTpmSecurityClient(result.registrationState.deviceId, result.registrationState.assignedHub, securityClient);
        var hubClient = Client.fromAuthenticationProvider(tpmAuthenticationProvider, iotHubTransport);
    
        var connectCallback = function (err) {
          if (err) {
            console.error('Could not connect: ' + err.message);
          } else {
            console.log('Client connected');
            var message = new Message('Hello world');
            hubClient.sendEvent(message, printResultFor('send'));
          }
        };
    
        hubClient.open(connectCallback);
    
        function printResultFor(op) {
          return function printResult(err, res) {
            if (err) console.log(op + ' error: ' + err.toString());
            if (res) console.log(op + ' status: ' + res.constructor.name);
            process.exit(1);
          };
        }
      }
    });
    
  8. Speichern und schließen Sie die Datei RegisterDevice.js.

  9. Führen Sie den folgenden Befehl aus:

    node RegisterDevice.js
    
  10. Beachten Sie die Nachrichten, die den Start und die Verbindungsherstellung des Geräts mit dem Device Provisioning-Dienst simulieren, um Ihre IoT Hub-Informationen abzurufen.

  1. Drücken Sie im Befehlsfenster, in dem der Java-Beispielcode auf Ihrem Computer ausgeführt wird, die EINGABETASTE, um die Ausführung der Anwendung fortzusetzen. Beachten Sie die Nachrichten, die den Start und die Verbindungsherstellung des Geräts mit dem Device Provisioning-Dienst simulieren, um Ihre IoT Hub-Informationen abzurufen.

    Java TPM device program final

Bestätigen der Registrierung der Gerätebereitstellung

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü auf der linken Seite oder auf der Portalseite die Option Alle Ressourcen aus.

  3. Wählen Sie den IoT-Hub aus, dem Ihr Gerät zugewiesen wurde.

  4. Wählen Sie im Menü Explorer die Option IoT-Geräte aus.

  1. Wenn Ihr Gerät erfolgreich bereitgestellt wurde, sollte die Geräte-ID in der Liste mit dem StatusAktiviert angezeigt werden. Wählen Sie oben auf der Seite Aktualisieren aus, falls Ihr Gerät nicht angezeigt wird.

    Device is registered with the IoT hub for C

  1. Wenn Ihr Gerät erfolgreich bereitgestellt wurde, sollte die Geräte-ID in der Liste mit dem StatusAktiviert angezeigt werden. Wählen Sie oben auf der Seite Aktualisieren aus, falls Ihr Gerät nicht angezeigt wird.

    Device is registered with the IoT hub for C#

  1. Wenn Ihr Gerät erfolgreich bereitgestellt wurde, sollte die Geräte-ID in der Liste mit dem StatusAktiviert angezeigt werden. Wählen Sie oben auf der Seite Aktualisieren aus, falls Ihr Gerät nicht angezeigt wird.

    Device is registered with the IoT hub for Node.js

  1. Wenn Ihr Gerät erfolgreich bereitgestellt wurde, sollte die Geräte-ID in der Liste mit dem StatusAktiviert angezeigt werden. Wählen Sie oben auf der Seite Aktualisieren aus, falls Ihr Gerät nicht angezeigt wird.

    Device is registered with the IoT hub

Hinweis

Wenn Sie den anfänglichen Gerätezwillingsstatus im Registrierungseintrag für Ihr Gerät gegenüber dem Standardwert geändert haben, kann der gewünschte Zwillingsstatus vom Hub abgerufen werden, und es können entsprechende Aktionen durchgeführt werden. Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.

Bereinigen von Ressourcen

Wenn Sie das Geräteclientbeispiel weiter verwenden und erkunden möchten, sollten Sie die in dieser Schnellstartanleitung erstellten Ressourcen nicht bereinigen. Falls Sie nicht fortfahren möchten, führen Sie die folgenden Schritte aus, um alle Ressourcen zu löschen, die im Rahmen dieser Schnellstartanleitung erstellt wurden.

Löschen der Geräteregistrierung

  1. Schließen Sie auf Ihrem Computer das Ausgabefenster des Geräteclientbeispiels.

  2. Wählen Sie im Azure-Portal im linken Menü die Option Alle Ressourcen aus.

  3. Wählen Sie Ihre Device Provisioning Service-Instanz aus.

  4. Wählen Sie im Menü Einstellungen die Option Registrierungen verwalten aus.

  5. Wählen Sie die Registerkarte Individuelle Registrierungen aus.

  6. Aktivieren Sie das Kontrollkästchen neben der Registrierungs-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.

  7. Wählen Sie oben auf der Seite Löschen aus.

Löschen Ihrer Geräteregistrierung aus IoT Hub

  1. Wählen Sie im Azure-Portal im linken Menü die Option Alle Ressourcen aus.

  2. Wählen Sie Ihren IoT Hub aus.

  3. Wählen Sie im Menü Explorer die Option IoT-Geräte aus.

  4. Aktivieren Sie das Kontrollkästchen neben der Geräte-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.

  5. Wählen Sie oben auf der Seite Löschen aus.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie ein einzelnes Gerät mit einer individuellen Registrierung für Ihren IoT-Hub bereitgestellt. Informieren Sie sich als Nächstes, wie IoT-Geräte auf mehreren IoT-Hubs bereitgestellt werden.