Início Rápido: Provisionar um dispositivo TPM simulado usando o SDK de C do IoT do AzureQuickstart: Provision a simulated TPM device using the Azure IoT C SDK

Neste início rápido, você aprenderá a criar e a executar um simulador de dispositivo TPM (Trusted Platform Module) em um computador de desenvolvimento com Windows.In this quickstart, you will learn how to create and run a Trusted Platform Module (TPM) device simulator on a Windows development machine. Você conectará esse dispositivo simulado a um hub IoT usando uma instância do Serviço de Provisionamento de Dispositivos.You will connect this simulated device to an IoT hub using a Device Provisioning Service instance. Usaremos um código de exemplo do SDK de C do IoT do Azure para ajudar a inscrever o dispositivo com uma instância do Serviço de Provisionamento de Dispositivos e simular uma sequência de inicialização para o dispositivo.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.

Se você não estiver familiarizado com o processo de provisionamento automático, examine a visão geral de provisionamento.If you're unfamiliar with the process of autoprovisioning, review the provisioning overview. Não se esqueça de concluir as etapas em Configurar o Serviço de Provisionamento de Dispositivos no Hub IoT com o Portal do Azure antes de continuar com este início rápido.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.

O Serviço de Provisionamento de Dispositivos de IoT do Azure dá suporte a dois tipos de registros:The Azure IoT Device Provisioning Service supports two types of enrollments:

Este artigo irá demonstrar registros individuais.This article will demonstrate individual enrollments.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Pré-requisitosPrerequisites

Os pré-requisitos a seguir são para um ambiente de desenvolvimento do Windows.The following prerequisites are for a Windows development environment. Para Linux ou macOS, confira a seção apropriada em Preparar seu ambiente de desenvolvimento na documentação do SDK.For Linux or macOS, see the appropriate section in Prepare your development environment in the SDK documentation.

Preparar um ambiente de desenvolvimento para o SDK de C do IoT do AzurePrepare a development environment for the Azure IoT C SDK

Nesta seção, você preparará um ambiente de desenvolvimento usado para compilar o SDK de C do IoT do Azure e o exemplo de simulador de dispositivo de 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. Baixe o sistema de build CMake.Download the CMake build system.

    É importante que os pré-requisitos do Visual Studio (Visual Studio e a carga de trabalho de "Desenvolvimento para Desktop com C++") estejam instalados em seu computador, antes da instalação de 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. Após a instalação dos pré-requisitos e verificação do download, instale o sistema de compilação CMake.Once the prerequisites are in place, and the download is verified, install the CMake build system.

  2. Localize o nome da tag para a versão mais recente do SDK.Find the tag name for the latest release of the SDK.

  3. Abra um prompt de comando ou o shell Bash do Git.Open a command prompt or Git Bash shell. Execute os comandos a seguir para clonar a versão mais recente do repositório do GitHub do SDK do Azure IoT C.Run the following commands to clone the latest release of the Azure IoT C SDK GitHub repository. Use a tag que você encontrou na etapa anterior como o valor para o parâmetro -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
    

    Essa operação deve demorar alguns minutos.You should expect this operation to take several minutes to complete.

  4. Crie um subdiretório cmake no diretório raiz do repositório git e navegue até essa pasta.Create a cmake subdirectory in the root directory of the git repository, and navigate to that folder. Execute os seguintes comandos do diretório azure-iot-sdk-c:Run the following commands from the azure-iot-sdk-c directory:

    mkdir cmake
    cd cmake
    

Compilar o SDK e executar o simulador de dispositivo TPMBuild the SDK and run the TPM device simulator

Nesta seção, você compilará o SDK de C do IoT do Azure, que inclui o código de exemplo de simulador de dispositivo TPM.In this section, you will build the Azure IoT C SDK, which includes the TPM device simulator sample code. Este exemplo fornece um mecanismo de atestado de TPM por meio da autenticação de Token SAS (Assinatura de Acesso Compartilhado).This sample provides a TPM attestation mechanism via Shared Access Signature (SAS) Token authentication.

  1. Do subdiretório cmake criado no repositório git azure-iot-sdk-c, execute o seguinte comando para criar o exemplo.From the cmake subdirectory you created in the azure-iot-sdk-c git repository, run the following command to build the sample. Uma solução do Visual Studio para o dispositivo simulado também será gerada por esse comando de compilação.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 ..
    

    Se cmake não encontrar o compilador do C++, você poderá obter erros de build ao executar o comando acima.If cmake does not find your C++ compiler, you might get build errors while running the above command. Se isso acontecer, tente executar esse comando no prompt de comando do Visual Studio.If that happens, try running this command in the Visual Studio command prompt.

    Após o sucesso da compilação, as últimas linhas de saída serão semelhantes à seguinte saída: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. Navegue até a pasta raiz do repositório git clonado e execute o simulador TPM usando o caminho mostrado abaixo.Navigate to the root folder of the git repository you cloned, and run the TPM simulator using the path shown below. Esse simulador escuta em um soquete nas portas 2321 e 2322.This simulator listens over a socket on ports 2321 and 2322. Não feche essa janela de comando; você precisará manter esse simulador em execução até o término deste início rápido.Do not close this command window; you will need to keep this simulator running until the end of this quickstart.

    Se você estiver na pasta cmake, execute os seguintes comandos:If you are in the cmake folder, then run the following commands:

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

    Você não verá qualquer saída do simulador.You will not see any output from the simulator. Deixe-o continuar simulando um dispositivo TPM.Let it continue to run simulating a TPM device.

Ler as chaves de criptografia do dispositivo TPMRead cryptographic keys from the TPM device

Nesta seção, você compilará e executará um exemplo que lerá a ID do registro e a chave de endosso do simulador de TPM que você deixou em execução e escutando nas portas 2321 e 2322.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. Esses valores serão usados para a inscrição do dispositivo com sua instância do Serviço de Provisionamento de Dispositivos.These values will be used for device enrollment with your Device Provisioning Service instance.

  1. Inicie o Visual Studio e abra o arquivo da nova solução chamado azure_iot_sdks.sln.Launch Visual Studio and open the new solution file named azure_iot_sdks.sln. Esse arquivo de solução está localizado na pasta cmake que você criou anteriormente na raiz do repositório 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. No menu do Visual Studio, selecione Compilar > Compilar Solução para compilar todos os projetos na solução.On the Visual Studio menu, select Build > Build Solution to build all projects in the solution.

  3. Na janela Gerenciador de Soluções do Visual Studio, navegue até a pasta Provisionar_Ferramentas.In Visual Studio's Solution Explorer window, navigate to the Provision_Tools folder. Clique com botão direito do mouse no projeto tpm_device_provision e selecione Definir como Projeto de Inicialização.Right-click the tpm_device_provision project and select Set as Startup Project.

  4. No menu do Visual Studio, selecione Depurar > Iniciar sem depuração para executar a solução.On the Visual Studio menu, select Debug > Start without debugging to run the solution. O aplicativo lê e exibe uma ID de Registro e uma Chave de endosso.The app reads and displays a Registration ID and an Endorsement key. Anote ou copie esses valores.Note or copy these values. Eles serão usados na próxima seção para inscrição do dispositivo.They will be used in the next section for device enrollment.

Criar uma entrada de registro de dispositivo no portalCreate a device enrollment entry in the portal

  1. Entre no portal do Azure, selecione o botão Todos os recursos no menu esquerdo e abra o serviço de Provisionamento de Dispositivos.Sign in to the Azure portal, select the All resources button on the left-hand menu and open your Device Provisioning service.

  2. Selecione a guia Gerenciar registros e selecione o botão Adicionar registro individual na parte superior.Select the Manage enrollments tab, and then select the Add individual enrollment button at the top.

  3. No painel Adicionar Registro, insira as seguintes informações:In the Add Enrollment panel, enter the following information:

    • Selecione TPM como o atestado de identidade Mecanismo.Select TPM as the identity attestation Mechanism.

    • Insira a ID de Registro e Chave de Endosso para seu dispositivo do TPM com os valores anotados anteriormente, conforme anotados anteriormente.Enter the Registration ID and Endorsement key for your TPM device from the values you noted previously.

    • Selecione um hub IoT vinculado com o serviço de provisionamento.Select an IoT hub linked with your provisioning service.

    • Opcionalmente, você pode fornecer as seguintes informações:Optionally, you may provide the following information:

      • Insira uma ID de Dispositivo exclusiva (você pode usar test-docs-device ou fornecer a sua).Enter a unique Device ID (you can use the suggested test-docs-device or provide your own). Evite dados confidenciais ao nomear seu dispositivo.Make sure to avoid sensitive data while naming your device. Se você optar por não fornecer uma, a ID de registro será usada para identificar o dispositivo.If you choose not to provide one, the registration ID will be used to identify the device instead.
      • Atualize o Estado inicial do dispositivo gêmeo com a configuração inicial desejada para o dispositivo.Update the Initial device twin state with the desired initial configuration for the device.
    • Uma vez concluído, pressione o botão Salvar.Once complete, press the Save button.

      Inserir informações de registro de dispositivo no portal

      Em caso de registro bem-sucedido, a ID de Registro do seu dispositivo será exibida na lista na guia Registros Individuais.On successful enrollment, the Registration ID of your device will appear in the list under the Individual Enrollments tab.

Simular a primeira sequência de inicialização para o dispositivoSimulate first boot sequence for the device

Nesta seção, você configurará o exemplo de código para usar o AMQP (Advanced Message Queuing Protocol) e enviar a sequência de inicialização do dispositivo para a instância do Serviço de Provisionamento de Dispositivo.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. Essa sequência de inicialização fará com que o dispositivo seja reconhecido e atribuído a um hub IoT vinculado à instância do Serviço de Provisionamento de Dispositivo.This boot sequence will cause the device to be recognized and assigned to an IoT hub linked to the Device Provisioning Service instance.

  1. No Portal do Azure, selecione a guia Visão Geral do Serviço de Provisionamento de Dispositivos e anote o valor de Escopo da ID.In the Azure portal, select the Overview tab for your Device Provisioning service and copy the ID Scope value.

    Extrair informações do ponto de extremidade do Serviço de Provisionamento de Dispositivo do portal

  2. Na janela Gerenciador de Soluções do Visual Studio, navegue até a pasta Provisionar_Exemplos.In Visual Studio's Solution Explorer window, navigate to the Provision_Samples folder. Expanda o projeto de exemplo chamado prov_dev_client_sample.Expand the sample project named prov_dev_client_sample. Expanda Arquivos de Origem e abra prov_dev_client_sample.c.Expand Source Files, and open prov_dev_client_sample.c.

  3. Próximo à parte superior do arquivo, localize as instruções #define para cada protocolo de dispositivo, conforme mostrado abaixo.Near the top of the file, find the #define statements for each device protocol as shown below. Remova a marca de comentário apenas de SAMPLE_AMQP.Make sure only SAMPLE_AMQP is uncommented.

    Atualmente, o protocol MQTT não tem suporte para o Registro Individual de TPM.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. Localize a constante id_scope e substitua o valor pelo seu valor de Escopo de ID copiado anteriormente.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. Encontre a definição da função main() no mesmo arquivo.Find the definition for the main() function in the same file. Verifique se a variável hsm_type está definida como SECURE_DEVICE_TYPE_TPM em vez de SECURE_DEVICE_TYPE_X509, conforme mostrado abaixo.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. Clique com botão direito do mouse no projeto prov_dev_client_sample e selecione Definir como Projeto de Inicialização.Right-click the prov_dev_client_sample project and select Set as Startup Project.

  7. No menu do Visual Studio, selecione Depurar > Iniciar sem depuração para executar a solução.On the Visual Studio menu, select Debug > Start without debugging to run the solution. No prompt para recompilar o projeto, selecione Sim para recompilar o projeto antes da execução.In the prompt to rebuild the project, select Yes, to rebuild the project before running.

    A saída a seguir é um exemplo da inicialização bem-sucedida do exemplo de cliente de dispositivo provisionamento, e da conexão com uma instância de Serviço de Provisionamento de Dispositivos para obter informações e registrar o hub IoT: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. Após o provisionamento do dispositivo simulado no Hub IoT por seu serviço de provisionamento, a ID do dispositivo aparece em Dispositivos IOT do hub.Once the simulated device is provisioned to the IoT hub by your provisioning service, the device ID appears with the hub's IoT devices.

    Dispositivo é registrado no Hub IoT

Limpar os recursosClean up resources

Se planejar continuar a trabalhar e explorar o dispositivo cliente de exemplo, não limpe os recursos criados neste início rápido.If you plan to continue working on and exploring the device client sample, do not clean up the resources created in this quickstart. Caso contrário, use as seguintes etapas para excluir todos os recursos criados por este início rápido.If you do not plan to continue, use the following steps to delete all resources created by this quickstart.

  1. Feche a janela de saída de exemplo de dispositivo cliente em seu computador.Close the device client sample output window on your machine.
  2. Feche a janela do simulador do TPM no seu computador.Close the TPM simulator window on your machine.
  3. No menu à esquerda no portal do Azure, selecione Todos os recursos e selecione o serviço de Provisionamento de Dispositivos.From the left-hand menu in the Azure portal, select All resources and then select your Device Provisioning service. Abra Gerenciar Registros de seu serviço e selecione a guia Registros Individuais. Marque a caixa de seleção ao lado da ID DE REGISTRO do dispositivo registrado neste início rápido e pressione o botão Excluir, na parte superior do painel.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. No menu à esquerda no portal do Azure, selecione Todos os recursos e seu Hub IoT.From the left-hand menu in the Azure portal, select All resources and then select your IoT hub. Abra Dispositivos IoT do hub, marque a caixa de seleção ao lado da ID DO DISPOSITIVO registrado neste início rápido e pressione o botão Excluir na parte superior do painel.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.

Próximas etapasNext steps

Neste Guia de Início Rápido, você criou um dispositivo simulado TPM no seu computador e o provisionou no Hub IoT usando o Serviço de Provisionamento de Dispositivos no Hub 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. Para saber como registrar seu dispositivo TPM programaticamente, continue com o Guia de Início Rápido para registro programático de um dispositivo TPM.To learn how to enroll your TPM device programmatically, continue to the quickstart for programmatic enrollment of a TPM device.