Hızlı Başlangıç: Azure IOT C SDK'sını kullanarak sanal bir TPM cihazı sağlamaQuickstart: Provision a simulated TPM device using the Azure IoT C SDK

Bu hızlı başlangıçta, Windows geliştirme makinesi üzerinde Güvenilir Platform Modülü (TPM) cihazı simülatörünü oluşturmayı ve çalıştırmayı öğreneceksiniz.In this quickstart, you will learn how to create and run a Trusted Platform Module (TPM) device simulator on a Windows development machine. Cihaz Sağlama Hizmeti örneğini kullanarak bu simülasyon cihazını bir IoT hub'ına bağlayacaksınız.You will connect this simulated device to an IoT hub using a Device Provisioning Service instance. Cihazı Cihaz Sağlama Hizmeti örneğine kaydetmek ve cihaz için bir önyükleme sırası simülasyonu yapmak için Azure IoT C SDK'sındaki örnek kodu kullanacaksınız.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.

Otomatik sağlama işlemini bilmiyorsanız, Otomatik sağlama kavramlarını gözden geçirin.If you're unfamiliar with the process of autoprovisioning, review Auto-provisioning concepts. Ayrıca, bu hızlı başlangıçla devam etmeden önce IoT Hub Cihazı Sağlama Hizmetini Azure portalla ayarlama bölümünde bulunan adımları tamamladığınızdan emin olun.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.

Azure IoT Cihaz Sağlama Hizmeti iki tür kaydı destekler:The Azure IoT Device Provisioning Service supports two types of enrollments:

Bu makalede bireysel kayıtlar gösterilmektedir.This article will demonstrate individual enrollments.

Yoksa bir Azure aboneliği, oluşturun bir ücretsiz bir hesap başlamadan önce.If you don't have an Azure subscription, create a free account before you begin.

ÖnkoşullarPrerequisites

Azure IoT C SDK'sı için geliştirme ortamını hazırlamaPrepare a development environment for the Azure IoT C SDK

Bu bölümde, Azure IoT C SDK'sı ile TPM cihaz simülatör örneğini oluşturmak için kullanılan geliştirme ortamını hazırlayacaksınız.In this section, you will prepare a development environment used to build the Azure IoT C SDK and the TPM device simulator sample.

  1. İndirme CMake derleme sistemini.Download the CMake build system.

    CMake yüklemesine başlamadan önce makinenizde Visual Studio önkoşullarının (Visual Studio ve "C++ ile masaüstü geliştirme" iş yükü) yüklenmiş olması önemlidir.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. Önkoşullar sağlandıktan ve indirme doğrulandıktan sonra, CMake derleme sistemini yükleyin.Once the prerequisites are in place, and the download is verified, install the CMake build system.

  2. Komut istemini veya Git Bash kabuğunu açın.Open a command prompt or Git Bash shell. Aşağıdaki komutu yürüterek Azure IoT C SDK'sı GitHub deposunu kopyalayın: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
    

    Bu işlemin tamamlanması için birkaç dakika beklemeniz gerekebilir.You should expect this operation to take several minutes to complete.

  3. Git deposunun kök dizininde bir cmake alt dizini oluşturun ve o klasöre gidin.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
    

SDK'yı derleme ve TPM cihaz simülatörünü çalıştırmaBuild the SDK and run the TPM device simulator

Bu bölümde, TPM cihaz simülatörü örnek kodunu içeren Azure IoT C SDK'sını oluşturacaksınız.In this section, you will build the Azure IoT C SDK, which includes the TPM device simulator sample code. Bu örnek, Paylaşılan Erişim İmzası (SAS) Belirteci kimlik doğrulaması yoluyla bir TPM kanıtlama mekanizması sağlar.This sample provides a TPM attestation mechanism via Shared Access Signature (SAS) Token authentication.

  1. azure-iot-sdk-c git deposunda oluşturduğunuz cmake alt dizininden aşağıdaki komutu çalıştırarak örneği derleyin.From the cmake subdirectory you created in the azure-iot-sdk-c git repository, run the following command to build the sample. Bu derleme komutuyla simülasyon cihazı için bir de Visual Studio çözümü oluşturulur.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 ..
    

    cmake, C++ derleyicinizi bulamazsa yukarıdaki komutu çalıştırırken derleme hatalarıyla karşılaşabilirsiniz.If cmake does not find your C++ compiler, you might get build errors while running the above command. Bu durumda bu komutu Visual Studio komut isteminde çalıştırmayı deneyin.If that happens, try running this command in the Visual Studio command prompt.

    Derleme başarılı olduktan sonra, son birkaç çıkış satırı aşağıdaki çıkışa benzer olacaktır: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. Kopyaladığınız git deposunun kök klasörüne gidin ve aşağıda gösterilen yolu kullanarak TPM simülatörünü çalıştırın.Navigate to the root folder of the git repository you cloned, and run the TPM simulator using the path shown below. Bu simülatör 2321 ve 2322 bağlantı noktalarında bulunan bir yuva üzerinden dinler.This simulator listens over a socket on ports 2321 and 2322. Bu komut penceresini kapatmayın; bu hızlı başlangıcın sonuna kadar simülatörü çalışır durumda tutmanız gerekir.Do not close this command window; you will need to keep this simulator running until the end of this quickstart.

    cmake klasöründeyseniz aşağıdaki komutları çalıştırın:If you are in the cmake folder, then run the following commands:

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

    Simülatörden hiçbir çıkış görmeyeceksiniz.You will not see any output from the simulator. TPM cihazının simülasyonunu yaparak çalışmaya devam etmesine izin verin.Let it continue to run simulating a TPM device.

TPM cihazından şifreleme anahtarlarını okumaRead cryptographic keys from the TPM device

Bu bölümde, çalışır ve 2321 ile 2322 numaralı bağlantı noktaları üzerinden dinler durumda bıraktığınız TPM simülatöründen onay anahtarını ve kayıt kimliğini okuyan bir örnek derleyecek ve bu örneği yürüteceksiniz.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. Bu değerler, Cihaz Sağlama Hizmeti örneğinize cihaz kaydı için kullanılacak.These values will be used for device enrollment with your Device Provisioning Service instance.

  1. Visual Studio’yu başlatın ve azure_iot_sdks.sln adlı yeni çözüm dosyasını açın.Launch Visual Studio and open the new solution file named azure_iot_sdks.sln. Bu çözüm dosyası daha önce azure-iot-sdk-c git deposunun kökünde oluşturduğunuz cmake klasöründe yer alır.This solution file is located in the cmake folder you previously created in the root of the azure-iot-sdk-c git repository.

  2. Çözümdeki tüm projeleri derlemek için Visual Studio menüsünde Derle > Çözümü Derle'yi seçin.On the Visual Studio menu, select Build > Build Solution to build all projects in the solution.

  3. Visual Studio'nun Çözüm Gezgini penceresinde Sağlama_Araçları klasörüne gidin.In Visual Studio's Solution Explorer window, navigate to the Provision_Tools folder. tpm_device_provision projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla’yı seçin.Right-click the tpm_device_provision project and select Set as Startup Project.

  4. Çözümü çalıştırmak için Visual Studio menüsünde Hata Ayıkla > Hata ayıklama olmadan başlat'ı seçin.On the Visual Studio menu, select Debug > Start without debugging to run the solution. Uygulama Kayıt Kimliği ve Onay Anahtarı değerlerini okur ve görüntüler.The app reads and displays a Registration ID and an Endorsement Key. Bu değerleri kopyalayın.Copy these values. Bunlar, bir sonraki bölümde cihaz kaydı için kullanılacaktır.They will be used in the next section for device enrollment.

Portalda bir cihaz kaydı girişi oluşturmaCreate a device enrollment entry in the portal

  1. Azure portalında oturum açın, sol taraftaki menüden Tüm kaynaklar düğmesine tıklayın ve Cihaz Sağlama hizmetinizi açın.Sign in to the Azure portal, click on the All resources button on the left-hand menu and open your Device Provisioning service.

  2. Kayıtları yönet sekmesini seçin ve ardından üstteki Tek kayıt ekle düğmesine tıklayın.Select the Manage enrollments tab, and then click the Add individual enrollment button at the top.

  3. Kayıt ekle altında aşağıdaki bilgileri girin ve Kaydet düğmesine tıklayın.On Add enrollment, enter the following information, and click the Save button.

    • Mekanizması: Kimlik onay Mekanizması olarak TPM seçeneğini belirleyin.Mechanism: Select TPM as the identity attestation Mechanism.

    • Onay anahtarı: Girin onay anahtarını çalıştırarak TPM cihazınız için oluşturulan tpm_device_provision proje.Endorsement key: Enter the Endorsement key you generated for your TPM device by running the tpm_device_provision project.

    • Kayıt Kimliği: Girin kayıt kimliği çalıştırarak TPM cihazınız için oluşturulan tpm_device_provision proje.Registration ID: Enter the Registration ID you generated for your TPM device by running the tpm_device_provision project.

    • IOT Edge cihazı: Seçin devre dışı.IoT Edge device: Select Disable.

    • IOT Hub cihaz kimliği: Girin test-docs-device cihaz kimliği vermek içinIoT Hub Device ID: Enter test-docs-device to give the device an ID.

      Portala cihaz kayıt bilgilerini girme

      Kayıt başarıyla tamamlanınca cihazınızın Kayıt Kimliği listenin altında Tek Tek Kayıtlar sekmesinde görünür.On successful enrollment, the Registration ID of your device will appear in the list under the Individual Enrollments tab.

Cihazın ilk önyükleme sırasını benzetim olarak çalıştırmaSimulate first boot sequence for the device

Bu bölümde, örnek kodu yapılandırarak cihazın önyükleme sırasını Cihaz Sağlama Hizmeti örneğinize göndermek üzere Gelişmiş İleti Sıraya Alma Protokolü (AMQP) kullanmasını sağlayacaksınız.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. Bu önyükleme sırası cihazın tanınmasına ve Cihaz Sağlama Hizmeti örneğine bağlı bir IoT hub'ına atanmasına neden olur.This boot sequence will cause the device to be recognized and assigned to an IoT hub linked to the Device Provisioning Service instance.

  1. Azure portalda, Cihaz Sağlama hizmetiniz için Genel Bakış sekmesini seçin ve Kimlik Kapsamı değerini kopyalayın.In the Azure portal, select the Overview tab for your Device Provisioning service and copy the ID Scope value.

    Portaldan Cihaz Sağlama Hizmeti uç noktası bilgilerini ayıklama

  2. Visual Studio'nun Çözüm Gezgini penceresinde Sağlama_Örnekleri klasörüne gidin.In Visual Studio's Solution Explorer window, navigate to the Provision_Samples folder. prov_dev_client_sample adlı örnek projeyi genişletin.Expand the sample project named prov_dev_client_sample. Kaynak Dosyalar'ı genişletin ve prov_dev_client_sample.c dosyasını açın.Expand Source Files, and open prov_dev_client_sample.c.

  3. Dosyanın üst kısmında, aşağıda gösterildiği gibi her cihaz protokolü için #define deyimlerini bulun.Near the top of the file, find the #define statements for each device protocol as shown below. Yalnızca SAMPLE_AMQP öğesinin açıklama haline getirilmediğinden emin olun.Make sure only SAMPLE_AMQP is uncommented.

    Şu anda, TPM Bireysel Kaydı için MQTT protokolü desteklenmemektedir.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. id_scope sabitini bulun ve değeri daha önce kopyalamış olduğunuz Kimlik Kapsamı değerinizle değiştirin.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. Aynı dosyada main() işlevinin tanımını bulun.Find the definition for the main() function in the same file. hsm_type değişkeninin aşağıda gösterildiği gibi SECURE_DEVICE_TYPE_X509 yerine SECURE_DEVICE_TYPE_TPM değerine ayarlandığından emin olun.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. prov_dev_client_sample projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla’yı seçin.Right-click the prov_dev_client_sample project and select Set as Startup Project.

  7. Çözümü çalıştırmak için Visual Studio menüsünde Hata Ayıkla > Hata ayıklama olmadan başlat'ı seçin.On the Visual Studio menu, select Debug > Start without debugging to run the solution. Projeyi yeniden derleme isteminde Evet'e tıklayarak, çalıştırmadan önce projeyi yeniden derleyin.In the prompt to rebuild the project, click Yes, to rebuild the project before running.

    Aşağıdaki çıkış, başarıyla önyüklemesi yapılan cihaz istemci örneğini sağlama ve IoT hub bilgilerini almak üzere Cihaz Sağlama Hizmeti'ne bağlanıp kaydolma işlemlerinin bir örneğidir: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. Simülasyon cihazı sağlama hizmetinizle IoT hub’ına sağlandıktan sonra, cihaz kimliği hub'ın IoT Cihazları altında gösterilir.Once the simulated device is provisioned to the IoT hub by your provisioning service, the device ID appears with the hub's IoT Devices.

    Cihaz IOT hub'da kayıtlı

Kaynakları temizlemeClean up resources

Cihaz istemci örneği üzerinde çalışmaya ve inceleme yapmaya devam etmeyi planlıyorsanız bu Hızlı Başlangıç’ta oluşturulan kaynakları silmeyin.If you plan to continue working on and exploring the device client sample, do not clean up the resources created in this Quickstart. Devam etmeyi planlamıyorsanız, bu hızlı başlangıç ile oluşturulan tüm kaynakları silmek için aşağıdaki adımları kullanın:If you do not plan to continue, use the following steps to delete all resources created by this Quickstart.

  1. Makinenizde cihaz istemci örnek çıktı penceresini kapatın.Close the device client sample output window on your machine.
  2. Makinenizde TPM simülatörü penceresini kapatın.Close the TPM simulator window on your machine.
  3. Azure portalında sol taraftaki menüden Tüm kaynaklar’ı ve ardından Cihaz Sağlama hizmetini seçin.From the left-hand menu in the Azure portal, click All resources and then select your Device Provisioning service. Hizmetinizle ilgili Kayıtları Yönetme’yi açın ve Bireysel Kayıtlar sekmesine tıklayın. Bu Hızlı Başlangıç adımlarını kullanarak kaydettiğiniz cihazın KAYIT KİMLİĞİ değerini seçip en üstte bulunan Sil düğmesine tıklayın.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. Azure portalında sol taraftaki menüden Tüm kaynaklar’ı ve ardından IoT hub’ınızı seçin.From the left-hand menu in the Azure portal, click All resources and then select your IoT hub. Hub'ınızın IoT Cihazları seçeneğini açıp bu Hızlı Başlangıç adımlarını kullanarak kaydettiğiniz cihazın CİHAZ KİMLİĞİ değerini seçin ve en üstte bulunan Sil düğmesine tıklayın.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.

Sonraki adımlarNext steps

Bu hızlı başlangıçta makinenizde bir TPM sanal cihazı oluşturdunuz ve IoT Hub Cihaz Sağlama Hizmeti ile IoT hub'ınıza sağladınız.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. TPM cihazınızı programlı bir şekilde kaydetmeyi öğrenmek için TPM cihazının programlı kaydının yer aldığı Hızlı Başlangıç adımlarına gidin.To learn how to enroll your TPM device programmatically, continue to the Quickstart for programmatic enrollment of a TPM device.