Rychlé zprovoznění: Zřízení simulovaného zařízení TPM s využitím sady Azure IoT C SDKQuickstart: Provision a simulated TPM device using the Azure IoT C SDK

V tomto rychlém zprovoznění se dozvíte, jak vytvořit a spustit simulátor zařízení TPM (Trusted Platform Module) na vývojovém počítači s Windows.In this quickstart, you will learn how to create and run a Trusted Platform Module (TPM) device simulator on a Windows development machine. Toto simulované zařízení připojíte k IoT Hubu pomocí instance služby Device Provisioning.You will connect this simulated device to an IoT hub using a Device Provisioning Service instance. Ukázkový kód ze sady Azure IoT C SDK se použije při registraci zařízení s využitím služby Device Provisioning a simulaci spouštěcí sekvence pro toto zařízení.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.

Pokud neznáte proces automatického zřizování, projděte si koncepty automatického zřizování.If you're unfamiliar with the process of auto-provisioning, review Auto-provisioning concepts. Než budete pokračovat v tomto rychlém zprovoznění, ujistěte se také, že jste provedli kroky uvedené v tématu Nastavení služby IoT Hub Device Provisioning Service pomocí webu Azure Portal.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.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.If you don't have an Azure subscription, create a free account before you begin.

PožadavkyPrerequisites

Příprava vývojového prostředí pro Azure IoT C SDKPrepare a development environment for the Azure IoT C SDK

V této části připravíte vývojové prostředí použité k sestavení Azure IoT C SDK a ukázky simulátoru zařízení TPM.In this section, you will prepare a development environment used to build the Azure IoT C SDK and the TPM device simulator sample.

  1. Stáhněte si nejnovější vydanou verzi sestavovacího systému CMake.Download the latest release version of the CMake build system. Na stejném webu si najděte kryptografickou hodnotu hash pro zvolenou binární distribuci.From that same site, look up the cryptographic hash for the version of the binary distribution you chose. Stažený binární soubor ověřte pomocí odpovídající kryptografické hodnoty hash.Verify the downloaded binary using the corresponding cryptographic hash value. Následující příklad používá Windows PowerShell k ověření kryptografické hodnoty hash pro verzi 3.11.4 distribuce x64 MSI:The following example used Windows PowerShell to verify the cryptographic hash for version 3.11.4 of the x64 MSI distribution:

    PS C:\Users\wesmc\Downloads> $hash = get-filehash .\cmake-3.11.4-win64-x64.msi
    PS C:\Users\wesmc\Downloads> $hash.Hash -eq "56e3605b8e49cd446f3487da88fcc38cb9c3e9e99a20f5d4bd63e54b7a35f869"
    True
    

    Je důležité, aby požadavky na sadu Visual Studio (Visual Studio a sada funkcí Vývoj desktopových aplikací pomocí C++) byly na vašem počítači nainstalované ještě před zahájením instalace CMake.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. Jakmile jsou požadované součásti k dispozici a stažený soubor je ověřený, nainstalujte sestavovací systém CMake.Once the prerequisites are in place, and the download is verified, install the CMake build system.

  2. Otevřete prostředí příkazového řádku nebo Git Bash.Open a command prompt or Git Bash shell. Spusťte následující příkaz pro naklonování úložiště GitHub sady Azure IoT C SDK:Execute the following command to clone the Azure IoT C SDK GitHub repository:

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

    Velikost tohoto úložiště je aktuálně přibližně 220 MB.The size of this repository is currently around 220 MB. Buďte připravení na to, že může trvat i několik minut, než se tato operace dokončí.You should expect this operation to take several minutes to complete.

  3. V kořenovém adresáři úložiště Git vytvořte podadresář cmake a přejděte do této složky.Create a cmake subdirectory in the root directory of the git repository, and navigate to that folder.

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    

Sestavení SDK a spuštění simulátoru zařízení TPMBuild the SDK and run the TPM device simulator

V této části sestavíte sadu Azure IoT C SDK, která zahrnuje ukázkový kód simulátoru zařízení TPM.In this section, you will build the Azure IoT C SDK, which includes the TPM device simulator sample code. Tato ukázka poskytuje mechanismus osvědčení TPM prostřednictvím ověřování tokenu sdíleného přístupového podpisu (SAS).This sample provides a TPM attestation mechanism via Shared Access Signature (SAS) Token authentication.

  1. Z podadresáře cmake, ve kterém jste vytvořili úložiště azure-iot-sdk-c git, spusťte následující příkaz pro sestavení ukázky.From the cmake subdirectory you created in the azure-iot-sdk-c git repository, run the following command to build the sample. Tento příkaz pro sestavení vygeneruje pro toto simulované zařízení také řešení Visual Studio.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 ..
    

    Pokud cmake nenajde váš kompilátor C++, můžou se při spuštění výše uvedeného příkazu zobrazit chyby sestavení.If cmake does not find your C++ compiler, you might get build errors while running the above command. Pokud k tomu dojde, zkuste tento příkaz spustit v příkazovém řádku sady Visual Studio.If that happens, try running this command in the Visual Studio command prompt.

    Po úspěšném sestavení by posledních pár řádků výstupu mělo vypadat přibližně takto: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. Přejděte ke kořenové složce úložiště Git, které jste naklonovali, a spusťte simulátor TPM s využitím cesty uvedené níž.Navigate to the root folder of the git repository you cloned, and run the TPM simulator using the path shown below. Tento simulátor naslouchá přes soket na portech 2321 a 2322.This simulator listens over a socket on ports 2321 and 2322. Toto příkazové okno nezavírejte, simulátor je potřeba nechat spuštěný až do konce tohoto rychlého zprovoznění.Do not close this command window; you will need to keep this simulator running until the end of this quickstart.

    Pokud jste ve složce cmake, spusťte následující příkazy:If you are in the cmake folder, then run the following commands:

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

    Ze simulátoru neuvidíte žádný výstup.You will not see any output from the simulator. Necháme ho běžet, aby simuloval zařízení TPM.Let it continue to run simulating a TPM device.

Načtení kryptografických klíčů ze zařízení TPMRead cryptographic keys from the TPM device

V této části sestavíte a spustíte příklad, který ze simulátoru TPM, který jste nechali spuštěný, aby naslouchal na portech 2321 a 2322, načte ověřovací klíč a ID registrace.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. Tyto hodnoty se použijí pro registraci zařízení s vaší instancí služby Device Provisioning.These values will be used for device enrollment with your Device Provisioning Service instance.

  1. Spusťte sadu Visual Studio a otevřete nový soubor řešení s názvem azure_iot_sdks.sln.Launch Visual Studio and open the new solution file named azure_iot_sdks.sln. Tento soubor řešení je umístěný ve složce cmake, kterou jste vytvořili v kořenovém adresáři úložiště Git azure-iot-sdk-c.This solution file is located in the cmake folder you previously created in the root of the azure-iot-sdk-c git repository.

  2. V nabídce sady Visual Studio vyberte Sestavit > Sestavit řešení a sestavte všechny projekty v příslušném řešení.On the Visual Studio menu, select Build > Build Solution to build all projects in the solution.

  3. V podokně Průzkumník řešení sady Visual Studio přejděte do složky Provision_Tools.In Visual Studio's Solution Explorer window, navigate to the Provision_Tools folder. Klikněte pravým tlačítkem na projekt tpm_device_provision a vyberte Nastavit jako spouštěný projekt.Right-click the tpm_device_provision project and select Set as Startup Project.

  4. V nabídce sady Visual Studio vyberte Ladit > Spustit bez ladění a spusťte řešení.On the Visual Studio menu, select Debug > Start without debugging to run the solution. Aplikace načte a zobrazí ID registrace a ověřovací klíč.The app reads and displays a Registration ID and an Endorsement Key. Tyto hodnoty zkopírujte.Copy these values. Použijí se v další části pro registraci zařízení.They will be used in the next section for device enrollment.

Vytvoření položky registrace zařízení na portáluCreate a device enrollment entry in the portal

  1. Přihlaste se k webu Azure Portal, v nabídce vlevo klikněte na tlačítko Všechny prostředky a otevřete svou službu Device Provisioning.Sign in to the Azure portal, click on the All resources button on the left-hand menu and open your Device Provisioning service.

  2. Vyberte kartu Správa registrací a potom v horní části klikněte na tlačítko Přidat jednotlivou registraci.Select the Manage enrollments tab, and then click the Add individual enrollment button at the top.

  3. V části Přidat registraci zadejte následující informace a klikněte na tlačítko Uložit.On Add enrollment, enter the following information, and click the Save button.

    • Mechanismus: Jako mechanismus pro ověření identity vyberte TPM.Mechanism: Select TPM as the identity attestation Mechanism.
    • Ověřovací klíč: Zadejte ověřovací klíč, který jste pro zařízení TPM vytvořili spuštěním projektu tpm_device_provision.Endorsement key: Enter the Endorsement key you generated for your TPM device by running the tpm_device_provision project.
    • ID registrace: Zadejte ID registrace, které jste pro zařízení TPM vytvořili spuštěním projektu tpm_device_provision.Registration ID: Enter the Registration ID you generated for your TPM device by running the tpm_device_provision project.
    • Zařízení IoT Edge: Vyberte Zakázat.IoT Edge device: Select Disable.
    • ID zařízení centra IoT Hub: Jako ID zařízení zadejte test-docs-device.IoT Hub Device ID: Enter test-docs-device to give the device an ID.

      Zadání informací o registraci zařízení na portálu

      Po úspěšné registraci se ID registrace vašeho zařízení zobrazí v seznamu na kartě Jednotlivé registrace.On successful enrollment, the Registration ID of your device will appear in the list under the Individual Enrollments tab.

Simulace první spouštěcí sekvence pro zařízeníSimulate first boot sequence for the device

V této části nakonfigurujete ukázkový kód, aby použil protokol AMQP (Advanced Message Queuing Protocol) k odeslání spouštěcí sekvence zařízení do vaší instance služby Device Provisioning.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. Toto spouštěcí sekvence způsobí, že se zařízení rozpozná a přiřadí službě IoT Hub propojené s instancí služby Device Provisioning.This boot sequence will cause the device to be recognized and assigned to an IoT hub linked to the Device Provisioning Service instance.

  1. Na webu Azure Portal vyberte okno Přehled služby Device Provisioning a zkopírujte hodnotu Rozsah ID.In the Azure portal, select the Overview tab for your Device Provisioning service and copy the ID Scope value.

    Extrahování informací o koncovém bodu služby Device Provisioning z portálu

  2. V podokně Průzkumník řešení sady Visual Studio přejděte do složky Provision_Samples.In Visual Studio's Solution Explorer window, navigate to the Provision_Samples folder. Rozbalte ukázkový projekt s názvem prov_dev_client_sample.Expand the sample project named prov_dev_client_sample. Rozbalte zdrojové soubory a otevřete prov_dev_client_sample.c.Expand Source Files, and open prov_dev_client_sample.c.

  3. V horní části souboru najděte příkazy #define pro jednotlivé protokoly zařízení, jak je vidět dole.Near the top of the file, find the #define statements for each device protocol as shown below. Zkontrolujte, že položka SAMPLE_AMQP není zakomentovaná.Make sure only SAMPLE_AMQP is uncommented.

    V současnosti se protokol MQTT pro jednotlivé registrace TPM nepodporuje.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. Najděte konstantu id_scope a nahraďte její hodnotu hodnotou Rozsah ID, kterou jste si zkopírovali.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. Ve stejném souboru vyhledejte definici funkce main().Find the definition for the main() function in the same file. Zkontrolujte, jestli je proměnná hsm_type nastavená na hodnotu SECURE_DEVICE_TYPE_TPM, a ne na hodnotu SECURE_DEVICE_TYPE_X509, jak je vidět dole.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. Klikněte pravým tlačítkem na projekt prov_dev_client_sample a vyberte Nastavit jako spouštěný projekt.Right-click the prov_dev_client_sample project and select Set as Startup Project.

  7. V nabídce sady Visual Studio vyberte Ladit > Spustit bez ladění a spusťte řešení.On the Visual Studio menu, select Debug > Start without debugging to run the solution. Po zobrazení výzvy ke znovusestavení projektu klikněte na Ano a před spuštěním projekt znovu sestavte.In the prompt to rebuild the project, click Yes, to rebuild the project before running.

    Následující výstup je příkladem úspěšného spuštění ukázky klienta zřizování zařízení a připojení k instanci služby Device Provisioning pro získání informací o centru IoT hub a zajištění registrace: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. Jakmile služba zřizování úspěšně zřídí simulované zařízení v centru IoT, ID tohoto zařízení se zobrazí v okně Zařízení IoT tohoto centra.Once the simulated device is provisioned to the IoT hub by your provisioning service, the device ID appears with the hub's IoT Devices.

    Zařízení je zaregistrované u centra IoT

Vyčištění prostředkůClean up resources

Pokud chcete pokračovat v práci s touto ukázkou klienta zařízení a jejím prozkoumáváním, nevyčišťujte prostředky vytvořené v rámci tohoto rychlého startu.If you plan to continue working on and exploring the device client sample, do not clean up the resources created in this Quickstart. Pokud pokračovat nechcete, pomocí následujícího postupu odstraňte všechny prostředky vytvořené tímto rychlým startem.If you do not plan to continue, use the following steps to delete all resources created by this Quickstart.

  1. Zavřete na svém počítači okno výstupu ukázky klienta zařízení.Close the device client sample output window on your machine.
  2. Zavřete na svém počítači okno simulátoru TPM.Close the TPM simulator window on your machine.
  3. V nabídce vlevo na webu Azure Portal klikněte na Všechny prostředky a vyberte svou službu Device Provisioning.From the left-hand menu in the Azure portal, click All resources and then select your Device Provisioning service. Otevřete okno Správa registrací pro vaši službu a potom klikněte na kartu Jednotlivé registrace. Vyberte ID REGISTRACE zařízení, které jste zaregistrovali v rámci tohoto rychlého startu, a klikněte na tlačítko Odstranit v horní části.Open Manage Enrollments for your service, and then click the Individual Enrollments tab. Select the REGISTRATION ID of the device you enrolled in this Quickstart, and click the Delete button at the top.
  4. V nabídce vlevo na webu Azure Portal klikněte na Všechny prostředky a vyberte své centrum IoT.From the left-hand menu in the Azure portal, click All resources and then select your IoT hub. Otevřete Zařízení IoT pro vaše centrum, vyberte ID ZAŘÍZENÍ, které jste zaregistrovali v rámci tohoto rychlého zprovoznění, a potom klikněte na tlačítko Odstranit v horní části.Open IoT Devices for your hub, select the DEVICE ID of the device you registered in this Quickstart, and then click Delete button at the top.

Další krokyNext steps

V rámci tohoto rychlého startu jste na svém počítači vytvořili simulované zařízení TPM a pomocí služby IoT Hub Device Provisioning jste ho zřídili pro své centrum IoT.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. Pokud chcete zjistit, jak zaregistrovat zařízení TPM prostřednictvím kódu programu, pokračujte k rychlému startu pro registraci zařízení TPM prostřednictvím kódu programu.To learn how to enroll your TPM device programmatically, continue to the Quickstart for programmatic enrollment of a TPM device.