Schnellstart: Bereitstellen eines simulierten TPM-Geräts mithilfe des Azure IoT C SDKQuickstart: Provision a simulated TPM device using the Azure IoT C SDK

In dieser Schnellstartanleitung erfahren Sie, wie Sie einen TPM-Gerätesimulator (Trusted Platform Module) auf einem Windows-Entwicklungscomputer erstellen und ausführen.In this quickstart, you will learn how to create and run a Trusted Platform Module (TPM) device simulator on a Windows development machine. Sie verbinden dieses simulierte Gerät mit einem IoT Hub über eine Instanz des Device Provisioning-Diensts.You will connect this simulated device to an IoT hub using a Device Provisioning Service instance. Zur Registrieren des Geräts bei einer Instanz des Device Provisioning-Diensts zum Simulieren einer Startsequenz für das Gerät wird Beispielcode aus dem Azure IoT C SDK verwendet.Sample code from the Azure IoT C SDK will be used to help enroll the device with a Device Provisioning Service instance and simulate a boot sequence for the device.

Sollten Sie mit der automatischen Bereitstellung nicht vertraut sein, lesen Sie die Informationen unter Konzepte für die automatische Bereitstellung.If you're unfamiliar with the process of autoprovisioning, review Auto-provisioning concepts. 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 mit dieser Schnellstartanleitung fortfahren.Also, make sure you've completed the steps in Set up IoT Hub Device Provisioning Service with the Azure portal before continuing with this quickstart.

In Azure IoT Device Provisioning Service werden zwei Registrierungsarten unterstützt:The Azure IoT Device Provisioning Service supports two types of enrollments:

In diesem Artikel werden individuelle Registrierungen veranschaulicht.This article will demonstrate individual enrollments.

Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

VoraussetzungenPrerequisites

Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung.The following prerequisites are for a Windows development environment. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.For Linux or macOS, see the appropriate section in Prepare your development environment in the SDK documentation.

Vorbereiten einer Entwicklungsumgebung für das Azure IoT C SDKPrepare a development environment for the Azure IoT C SDK

In diesem Abschnitt bereiten Sie eine Entwicklungsumgebung vor, die zum Erstellen des Azure IoT C SDK und des TPM-Beispiels verwendet wird.In this section, you will prepare a development environment used to build the Azure IoT C SDK and the TPM device simulator sample.

  1. Laden Sie das CMake-Buildsystem herunter.Download the CMake build system.

    Wichtig: Die Voraussetzungen für Visual Studio (Visual Studio und die Workload „Desktopentwicklung mit C++“) müssen vor Beginn der Installation von CMake auf dem Computer installiert sein.It is important that the Visual Studio prerequisites (Visual Studio and the 'Desktop development with C++' workload) are installed on your machine, before starting the CMake installation. Sobald die Voraussetzungen erfüllt sind und der Download überprüft wurde, installieren Sie das CMake-Buildsystem.Once the prerequisites are in place, and the download is verified, install the CMake build system.

  2. Suchen Sie den Tagnamen für das aktuelle Release des SDK.Find the tag name for the latest release of the SDK.

  3. Öffnen Sie eine Eingabeaufforderung oder die Git Bash-Shell.Open a command prompt or Git Bash shell. Führen Sie die folgenden Befehle zum Klonen des aktuellen Releases des Azure IoT C SDK-GitHub-Repositorys aus.Run the following commands to clone the latest release of the Azure IoT C SDK GitHub repository. Verwenden Sie das im vorherigen Schritt gefundene Tag als Wert für den Parameter -b:Use the tag you found in the previous step as the value for the -b parameter:

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

    Sie sollten damit rechnen, dass die Ausführung dieses Vorgangs mehrere Minuten in Anspruch nimmt.You should expect this operation to take several minutes to complete.

  4. Erstellen Sie ein cmake-Unterverzeichnis im Stammverzeichnis des Git-Repositorys, und navigieren Sie zu diesem Ordner.Create a cmake subdirectory in the root directory of the git repository, and navigate to that folder. Führen Sie die folgenden Befehle im azure-iot-sdk-c-Verzeichnis aus:Run the following commands from the azure-iot-sdk-c directory:

    mkdir cmake
    cd cmake
    

Erstellen des SDK und Ausführen des TPM-GerätesimulatorsBuild the SDK and run the TPM device simulator

In diesem Abschnitt erstellen Sie das Azure IoT C SDK, das den TPM-Gerätesimulator-Beispielcode enthält.In this section, you will build the Azure IoT C SDK, which includes the TPM device simulator sample code. Dieses Beispiel stellt einen TPM-Nachweismechanismus über SAS-Tokenauthentifizierung (Shared Access Signature) bereit.This sample provides a TPM attestation mechanism via Shared Access Signature (SAS) Token authentication.

  1. Führen Sie aus dem Unterverzeichnis cmake, das Sie im Git-Repository „azure-iot-sdk-c“ erstellt haben, den folgenden Befehl zum Erstellen des Beispiels aus.From the cmake subdirectory you created in the azure-iot-sdk-c git repository, run the following command to build the sample. Von diesem Build-Befehl wird außerdem eine Visual Studio-Projektmappe für das simulierte Gerät generiert.A Visual Studio solution for the simulated device will also be generated by this build command.

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

    Falls cmake Ihren C++-Compiler nicht findet, treten beim Ausführen des obigen Befehls unter Umständen Buildfehler auf.If cmake does not find your C++ compiler, you might get build errors while running the above command. Führen Sie den Befehl in diesem Fall an der Visual Studio-Eingabeaufforderung aus.If that happens, try running this command in the Visual Studio command prompt.

    Nach erfolgreicher Erstellung ähneln die letzten Ausgabezeilen der folgenden Ausgabe:Once the build succeeds, the last few output lines will look similar to the following output:

    $ cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    -- Building for: Visual Studio 15 2017
    -- Selecting Windows SDK version 10.0.16299.0 to target Windows 10.0.17134.
    -- The C compiler identification is MSVC 19.12.25835.0
    -- The CXX compiler identification is MSVC 19.12.25835.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: E:/IoT Testing/azure-iot-sdk-c/cmake
    
  2. Navigieren Sie zum Stammordner des Git-Repositorys, das Sie geklont haben, und führen Sie den TPM-Simulator mit dem unten gezeigten Pfad aus.Navigate to the root folder of the git repository you cloned, and run the TPM simulator using the path shown below. Dieser Simulator lauscht über einen Socket an den Ports 2321 und 2322.This simulator listens over a socket on ports 2321 and 2322. Lassen Sie das Befehlsfenster geöffnet. Es wird benötigt, um den Simulator bis zum Ende dieser Schnellstartanleitung auszuführen.Do not close this command window; you will need to keep this simulator running until the end of this quickstart.

    Wenn Sie sich im Ordner cmake befinden, führen Sie die folgenden Befehle aus:If you are in the cmake folder, then run the following commands:

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

    Es wird keine Ausgabe des Simulators angezeigt.You will not see any output from the simulator. Lassen Sie Ihn mit der Ausführung der Simulation eines TPM-Geräts fortfahren.Let it continue to run simulating a TPM device.

Lesen kryptografischer Schlüssel vom TPM-GerätRead cryptographic keys from the TPM device

In diesem Abschnitt werden Sie ein Beispiel erstellen und ausführen, das den Endorsement Key und die Registrierungs-ID aus dem TPM-Simulator liest, der weiterhin ausgeführt wird und über die Ports 2321 und 2322 lauscht.In this section, you will build and execute a sample that will read the endorsement key and registration ID from the TPM simulator you left running, and listening over ports 2321 and 2322. Diese Werte werden für die Geräteregistrierung bei Ihrer Instanz des Device Provisioning-Diensts verwendet.These values will be used for device enrollment with your Device Provisioning Service instance.

  1. Starten Sie Visual Studio, und öffnen Sie die neue Projektmappendatei namens azure_iot_sdks.sln.Launch Visual Studio and open the new solution file named azure_iot_sdks.sln. Diese Projektmappendatei befindet sich im cmake-Ordner, den Sie zuvor im Stammverzeichnis des azure-iot-sdk-c-Git-Repositorys erstellt haben.This solution file is located in the cmake folder you previously created in the root of the azure-iot-sdk-c git repository.

  2. Wählen Sie im Visual Studio-Menü die Option Erstellen > Projektmappe erstellen aus, um alle Projekte in der Projektmappe zu erstellen.On the Visual Studio menu, select Build > Build Solution to build all projects in the solution.

  3. Navigieren Sie im Visual Studio-Fenster Projektmappen-Explorer zum Ordner Provision_Tools.In Visual Studio's Solution Explorer window, navigate to the Provision_Tools folder. Klicken Sie mit der rechten Maustaste auf das Projekt tpm_device_provision, und wählen Sie Als Startprojekt festlegen aus.Right-click the tpm_device_provision project and select Set as Startup Project.

  4. Wählen Sie im Visual Studio-Menü die Option Debuggen > Starten ohne Debugging aus, um die Projektmappe auszuführen.On the Visual Studio menu, select Debug > Start without debugging to run the solution. Die App liest eine Registrierungs-ID und einen Endorsement Key und zeigt diese an.The app reads and displays a Registration ID and an Endorsement key. Notieren oder kopieren Sie diese Werte.Note or copy these values. Sie werden im nächsten Abschnitt für die Geräteregistrierung verwendet.They will be used in the next section for device enrollment.

Erstellen eines Geräteregistrierungseintrags im PortalCreate a device enrollment entry in the portal

  1. Melden Sie sich beim Azure-Portal an, wählen Sie im Menü links die Schaltfläche Alle Ressourcen aus, und öffnen Sie Ihren Gerätebereitstellungsdienst.Sign in to the Azure portal, select the All resources button on the left-hand menu and open your Device Provisioning service.

  2. Wählen Sie die Registerkarte Registrierungen verwalten und dann oben die Schaltfläche Individuelle Registrierung hinzufügen aus.Select the Manage enrollments tab, and then select the Add individual enrollment button at the top.

  3. Geben Sie im Bereich Registrierung hinzufügen die folgenden Informationen ein:In the Add Enrollment panel, enter the following information:

    • Wählen Sie TPM als Mechanismus für den Nachweis der Identität.Select TPM as the identity attestation Mechanism.

    • Geben Sie die zuvor notierte Registrierungs-ID und den Endorsement Key für Ihr TPM-Gerät entsprechend den zuvor notierten Werten ein.Enter the Registration ID and Endorsement key for your TPM device from the values you noted previously.

    • Wählen Sie einen IoT Hub aus, der mit Ihrem Bereitstellungsdienst verknüpft ist.Select an IoT hub linked with your provisioning service.

    • Optional können Sie die folgenden Informationen angeben:Optionally, you may provide the following information:

      • Geben Sie eine eindeutige Geräte-ID ein. (Sie können den Vorschlag test-docs-device verwenden oder eine eigene angeben.)Enter a unique Device ID (you can use the suggested test-docs-device or provide your own). Achten Sie darauf, dass Sie beim Benennen Ihres Geräts keine sensiblen Daten angeben.Make sure to avoid sensitive data while naming your device. Wenn Sie keine Angabe machen, wird das Gerät stattdessen über die Registrierungs-ID identifiziert.If you choose not to provide one, the registration ID will be used to identify the device instead.
      • Aktualisieren Sie Initial device twin state (Anfänglicher Gerätezwillingsstatus) mit der gewünschten Anfangskonfiguration für das Gerät.Update the Initial device twin state with the desired initial configuration for the device.
    • Klicken Sie abschließend auf die Schaltfläche Speichern.Once complete, press the Save button.

      Eingeben von Geräteregistrierungsinformationen im Portal

      Nach erfolgreicher Registrierung wird die Registrierungs-ID Ihres Geräts in der Liste auf der Registerkarte Individual Enrollments (Individuelle Registrierungen) angezeigt.On successful enrollment, the Registration ID of your device will appear in the list under the Individual Enrollments tab.

Simulieren der ersten Startsequenz für das GerätSimulate first boot sequence for the device

In diesem Abschnitt Konfigurieren Sie Beispielcode zum Verwenden von Advanced Message Queuing Protocol (AMQP), um die Startsequenz des Geräts an Ihre Instanz des Device Provisioning-Diensts zu senden.In this section, you will configure sample code to use the Advanced Message Queuing Protocol (AMQP) to send the device's boot sequence to your Device Provisioning Service instance. Diese Startsequenz bewirkt, dass das Gerät, die erkannt und einem mit der Instanz des Device Provisioning-Diensts verknüpften IoT Hub zugewiesen wird.This boot sequence will cause the device to be recognized and assigned to an IoT hub linked to the Device Provisioning Service instance.

  1. Navigieren Sie im Azure-Portal zur Registerkarte Übersicht für Ihren Device Provisioning-Dienst, und kopieren Sie den Wert unter ID-Bereich .In the Azure portal, select the Overview tab for your Device Provisioning service and copy the ID Scope value.

    Extrahieren von Informationen zum Device Provisioning Service-Endpunkt aus dem Portal

  2. Navigieren Sie im Visual Studio-Fenster Projektmappen-Explorer zum Ordner Provision_Samples.In Visual Studio's Solution Explorer window, navigate to the Provision_Samples folder. Erweitern Sie das Beispielprojekt mit dem Namen prov_dev_client_sample.Expand the sample project named prov_dev_client_sample. Erweitern Sie Quelldateien, und öffnen Sie prov_dev_client_sample.c.Expand Source Files, and open prov_dev_client_sample.c.

  3. Suchen Sie im oberen Bereich der Datei die #define-Anweisungen für jedes Geräteprotokoll, wie unten dargestellt.Near the top of the file, find the #define statements for each device protocol as shown below. Stellen Sie sicher, dass nur SAMPLE_AMQP auskommentiert wurde.Make sure only SAMPLE_AMQP is uncommented.

    Derzeit wird das MQTT-Protokoll nicht für die individuelle TPM-Registrierung unterstützt.Currently, the MQTT protocol is not supported for TPM Individual Enrollment.

    //
    // 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
    
  4. Suchen Sie die Konstante id_scope, und ersetzen Sie den Wert durch Ihren ID-Bereich-Wert, den Sie zuvor kopiert haben.Find the id_scope constant, and replace the value with your ID Scope value that you copied earlier.

    static const char* id_scope = "0ne00002193";
    
  5. Suchen Sie die Definition für die Funktion main() in der gleichen Datei.Find the definition for the main() function in the same file. Stellen Sie sicher, dass die Variable hsm_type wie unten dargestellt auf SECURE_DEVICE_TYPE_TPM anstelle von SECURE_DEVICE_TYPE_X509 festgelegt ist.Make sure the hsm_type variable is set to SECURE_DEVICE_TYPE_TPM instead of SECURE_DEVICE_TYPE_X509 as shown below.

    SECURE_DEVICE_TYPE hsm_type;
    hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    
  6. Klicken Sie mit der rechten Maustaste auf das Projekt prov_dev_client_sample, und wählen Sie Als Startprojekt festlegen aus.Right-click the prov_dev_client_sample project and select Set as Startup Project.

  7. Wählen Sie im Visual Studio-Menü die Option Debuggen > Starten ohne Debugging aus, um die Projektmappe auszuführen.On the Visual Studio menu, select Debug > Start without debugging to run the solution. Wählen Sie in der Aufforderung zum erneuten Erstellen des Projekts Ja aus, um das Projekt vor der Ausführung neu zu erstellen.In the prompt to rebuild the project, select Yes, to rebuild the project before running.

    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:The following output is an example of the provisioning device client sample successfully booting up, and connecting to a Device Provisioning Service instance to get IoT hub information and registering:

    Provisioning API Version: 1.2.7
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    
    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-device
    
  8. Nachdem das simulierte Gerät vom Bereitstellungsdienst für den IoT-Hub bereitgestellt wurde, wird die Geräte-ID mit den IoT-Geräten des Hubs angezeigt.Once the simulated device is provisioned to the IoT hub by your provisioning service, the device ID appears with the hub's IoT devices.

    Geräteregistrierung bei der IoT Hub-Instanz

Bereinigen von RessourcenClean up resources

Wenn Sie das Geräteclientbeispiel weiterhin verwenden und erkunden möchten, überspringen Sie die Bereinigung der in diesem Schnellstart erstellten Ressourcen.If you plan to continue working on and exploring the device client sample, do not clean up the resources created in this quickstart. Falls Sie nicht fortfahren möchten, führen Sie die folgenden Schritte aus, um alle Ressourcen zu löschen, die im Rahmen dieses Schnellstarts erstellt wurden.If you do not plan to continue, use the following steps to delete all resources created by this quickstart.

  1. Schließen Sie auf Ihrem Computer das Ausgabefenster des Geräteclientbeispiels.Close the device client sample output window on your machine.
  2. Schließen Sie auf Ihrem Computer das TPM-Simulatorfenster.Close the TPM simulator window on your machine.
  3. Wählen Sie im Azure-Portal im Menü links Alle Ressourcen und dann Ihren Gerätebereitstellungsdienst aus.From the left-hand menu in the Azure portal, select All resources and then select your Device Provisioning service. Öffnen Sie Registrierungen verwalten für Ihren Dienst, und wählen Sie dann die Registerkarte Individuelle Registrierungen aus. Aktivieren Sie das Kontrollkästchen REGISTRIERUNGS-ID für das Gerät, das Sie in diesem Schnellstart registriert haben, und wählen Sie oben im Bereich die Schaltfläche Löschen aus.Open Manage Enrollments for your service, and then select the Individual Enrollments tab. Select the check box next to the REGISTRATION ID of the device you enrolled in this quickstart, and press the Delete button at the top of the pane.
  4. Wählen Sie im linken Menü im Azure-Portal Alle Ressourcen und dann Ihren IoT-Hub aus.From the left-hand menu in the Azure portal, select All resources and then select your IoT hub. Öffnen Sie IoT-Geräte für Ihren Hub, aktivieren Sie das Kontrollkästchen der Geräte-ID des Geräts, das Sie in diesem Schnellstart registriert haben, und wählen Sie dann die Schaltfläche Löschen am oberen Rand des Bereichs aus.Open IoT devices for your hub, select the check box next to the DEVICE ID of the device you registered in this quickstart, and then press the Delete button at the top of the pane.

Nächste SchritteNext steps

In diesem Schnellstart haben Sie auf Ihrem Computer ein simuliertes TPM-Gerät erstellt und mithilfe von IoT Hub Device Provisioning Service für Ihren IoT-Hub bereitgestellt.In this quickstart, you’ve created a TPM simulated device on your machine and provisioned it to your IoT hub using the IoT Hub Device Provisioning Service. Informationen zum programmgesteuerten Registrieren Ihres TPM-Geräts finden Sie im Schnellstart für die programmgesteuerte Registrierung von TPM-Geräten.To learn how to enroll your TPM device programmatically, continue to the quickstart for programmatic enrollment of a TPM device.