Поделиться через


Программное создание отдельной регистрации службы подготовки устройств для аттестации доверенного платформенного модуля

В этой статье показано, как программно создать отдельную регистрацию для устройства TPM в службе подготовки устройств Центр Интернета вещей Azure с помощью пакета SDK службы DPS Центр Интернета вещей Azure и примера приложения. После создания отдельной регистрации можно при необходимости зарегистрировать имитированное устройство доверенного платформенного модуля в службе подготовки с помощью этой записи регистрации.

В этой статье описана работа с компьютером под управлением Windows, но эта процедура применима для компьютеров под управлением как Windows, так и Linux.

Необходимые компоненты

  • Установите пакет SDK для .NET 6.0 или более поздней версии или более поздней версии на компьютере под управлением Windows. Вы можете проверить установленную версию с помощью приведенной ниже команды.

    dotnet --info
    
  • (Необязательно) Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте инструкциям в статье "Создание и подготовка имитированного устройства доверенного платформенного модуля" до шага, в котором вы получаете ключ подтверждения для устройства. Сохраните ключ подтверждения, как вы его используете далее в этой статье.

    Примечание.

    Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.

  • Установите Node.js 4.0 или более поздней версии.

  • (Необязательно) Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, выполните процедуру создания и подготовки имитированного устройства доверенного платформенного платформенного модуля до шага, в котором вы получаете ключ подтверждения и идентификатор регистрации для устройства. Сохраните ключ подтверждения и идентификатор регистрации, как они используются далее в этой статье.

    Примечание.

    Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.

  • Установите пакет SDK для Java SE 8. В этой статье устанавливается пакет SDK службы Java далее в статье. Он поддерживает операционные системы Linux и Windows. В этой статье используется Windows.

  • Установите Maven 3.

  • Установите Git и убедитесь, что путь добавляется в переменную PATHсреды.

  • (Необязательно) Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте инструкциям в статье "Создание и подготовка имитированного устройства доверенного платформенного модуля" до шага, в котором вы получаете ключ подтверждения для устройства. Обратите внимание на ключ подтверждения и идентификатор регистрации, так как они используются далее в этой статье.

    Примечание.

    Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.

Получение ключа подтверждения доверенного платформенного модуля (необязательно)

Чтобы создать пример отдельной регистрации, выполните действия, описанные в этой статье. В этом случае вы сможете просмотреть запись регистрации в DPS, но вы не сможете использовать ее для подготовки устройства.

Вы также можете выполнить действия, описанные в этой статье, чтобы создать отдельную регистрацию и зарегистрировать имитированное устройство доверенного платформенного модуля. Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте инструкциям в статье "Создание и подготовка имитированного устройства доверенного платформенного модуля" до шага, в котором вы получаете ключ подтверждения для устройства. Сохраните ключ подтверждения, как вы его используете далее в этой статье.

Примечание.

Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.

Вы также можете выполнить действия, описанные в этой статье, чтобы создать отдельную регистрацию и зарегистрировать имитированное устройство доверенного платформенного модуля. Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, выполните процедуру создания и подготовки имитированного устройства доверенного платформенного платформенного модуля до шага, в котором вы получаете ключ подтверждения и идентификатор регистрации для устройства. Сохраните ключ подтверждения и идентификатор регистрации, как они используются далее в этой статье.

Примечание.

Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.

Вы также можете выполнить действия, описанные в этой статье, чтобы создать отдельную регистрацию и зарегистрировать имитированное устройство доверенного платформенного модуля. Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте инструкциям в статье "Создание и подготовка имитированного устройства доверенного платформенного модуля" до шага, в котором вы получаете ключ подтверждения для устройства. Обратите внимание на ключ подтверждения и идентификатор регистрации, так как они используются далее в этой статье.

Примечание.

Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.

Получение строки подключения к службе подготовки

Для примера в этой статье необходимо скопировать строка подключения для службы подготовки.

  1. Войдите на портал Azure.

  2. В меню слева на портале нажмите Все ресурсы.

  3. Выберите службу Подготовки устройств.

  4. В меню Параметры выберите Политики общего доступа.

  5. Выберите политику доступа, которую вы хотите использовать.

  6. На панели Политика доступа скопируйте и сохраните строку подключения первичного ключа.

    Get provisioning service connection string from the portal.

Создание примера для отдельной регистрации

В этом разделе показано, как создать консольное приложение .NET Core, которое добавляет в службу подготовки отдельные регистрации для устройства доверенного платформенного модуля.

  1. Откройте командную строку Windows и перейдите в папку, в которой вы хотите создать приложение.

  2. Чтобы создать консольный проект, выполните следующую команду:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Чтобы добавить ссылку на пакет SDK службы DPS, выполните следующую команду:

    dotnet add package Microsoft.Azure.Devices.Provisioning.Service 
    

    На этом шаге скачиваются, устанавливаются и добавляются ссылки на пакет NuGet клиента службы Azure IoT DPS и его зависимости. Этот пакет включает двоичные файлы для пакета SDK службы .NET.

  4. Откройте файл Program.cs в редакторе.

  5. Замените инструкцию пространства имен в верхней части файла следующим образом:

    namespace CreateIndividualEnrollment;
    
  6. Добавьте следующие using инструкции в верхней части файла над инструкцией namespace :

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Добавьте следующие поля в класс Program и внесите перечисленные изменения.

    private static string ProvisioningConnectionString = "{ProvisioningServiceConnectionString}";
    private const string RegistrationId = "sample-registrationid-csharp";
    private const string TpmEndorsementKey =
        "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUS" +
        "cTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3d" +
        "yKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKR" +
        "dln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFe" +
        "WlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==";
    
    // Optional parameters
    private const string OptionalDeviceId = "myCSharpDevice";
    private const ProvisioningStatus OptionalProvisioningStatus = ProvisioningStatus.Enabled;
    
    • Замените значение заполнителя ProvisioningServiceConnectionString строкой подключения службы подготовки, скопированной в предыдущем разделе.

    • Если вы используете эту статью вместе с кратким руководством по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, замените ключ подтверждения значением, указанным в этом кратком руководстве. Идентификатор устройства и идентификатор регистрации можно заменить значениями, предлагаемыми в этом кратком руководстве, использовать собственные значения или использовать значения по умолчанию в этом примере.

  8. Добавьте приведенный ниже метод в класс Program. Этот код создает отдельную запись регистрации, а затем вызывает CreateOrUpdateIndividualEnrollmentAsync метод ProvisioningServiceClient для добавления отдельной регистрации в службу подготовки.

    public static async Task RunSample()
    {
        Console.WriteLine("Starting sample...");
    
        using (ProvisioningServiceClient provisioningServiceClient =
                ProvisioningServiceClient.CreateFromConnectionString(ProvisioningConnectionString))
        {
            #region Create a new individualEnrollment config
            Console.WriteLine("\nCreating a new individualEnrollment object...");
            Attestation attestation = new TpmAttestation(TpmEndorsementKey);
            IndividualEnrollment individualEnrollment =
                    new IndividualEnrollment(
                            RegistrationId,
                            attestation);
    
            // The following parameters are optional. Remove them if you don't need them.
            individualEnrollment.DeviceId = OptionalDeviceId;
            individualEnrollment.ProvisioningStatus = OptionalProvisioningStatus;
            #endregion
    
            #region Create the individualEnrollment
            Console.WriteLine("\nAdding the individualEnrollment to the provisioning service...");
            IndividualEnrollment individualEnrollmentResult =
                await provisioningServiceClient.CreateOrUpdateIndividualEnrollmentAsync(individualEnrollment).ConfigureAwait(false);
            Console.WriteLine("\nIndividualEnrollment created with success.");
            Console.WriteLine(individualEnrollmentResult);
            #endregion
    
        }
    }
    
  9. Осталось заменить метод Main следующими строками:

    static async Task Main(string[] args)
    {
        await RunSample();
        Console.WriteLine("\nHit <Enter> to exit ...");
        Console.ReadLine();
    }
    
  10. Сохранение изменений.

  1. В окне командной строки перейдите в рабочую папку и выполните следующую команду:

    npm install azure-iot-provisioning-service
    

    На этом шаге скачиваются, устанавливаются и добавляются ссылки на клиентский пакет службы Azure IoT DPS и его зависимости. Этот пакет включает двоичные файлы для пакета SDK службы Node.js.

  2. С помощью текстового редактора создайте а рабочей папке файл create_individual_enrollment.js. Добавьте указанный ниже код в файл.

    'use strict';
    
    var provisioningServiceClient = require('azure-iot-provisioning-service').ProvisioningServiceClient;
    
    var serviceClient = provisioningServiceClient.fromConnectionString(process.argv[2]);
    var endorsementKey = process.argv[3];
    
    var enrollment = {
      registrationId: 'first',
      attestation: {
        type: 'tpm',
        tpm: {
          endorsementKey: endorsementKey
        }
      }
    };
    
    serviceClient.createOrUpdateIndividualEnrollment(enrollment, function(err, enrollmentResponse) {
      if (err) {
        console.log('error creating the individual enrollment: ' + err);
      } else {
        console.log("enrollment record returned: " + JSON.stringify(enrollmentResponse, null, 2));
      }
    });
    
  3. Сохраните файл.

  1. Откройте командную строку Windows.

  2. Клонируйте пакеты SDK Microsoft Azure IoT для репозитория Java GitHub:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Перейдите к образцу папки:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Откройте файл \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java в редакторе.

  5. Замените [Provisioning Connection String] строкой подключения, скопированной в разделе Получение строки подключения для службы подготовки.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Добавьте сведения об устройстве доверенного платформенного модуля. Замените приведенные [RegistrationId] [TPM Endorsement Key] ниже инструкции ключом подтверждения и идентификатором регистрации.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Если вы используете эту статью вместе с кратким руководством по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, используйте значения ключа регистрации и подтверждения, которые вы указали из этого краткого руководства.

    • Если вы используете эту статью для создания примера отдельной регистрации и не планируете использовать его для регистрации устройства, можно использовать следующее значение для ключа подтверждения:

      private static final String TPM_ENDORSEMENT_KEY = "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnefZcBhgy1SSDQMQ==";
      

      Введите собственное значение для идентификатора регистрации, например myJavaDevice.

  7. Для отдельных регистраций можно задать идентификатор устройства, который DPS назначает устройству при подготовке устройства к Центр Интернета вещей. Если идентификатор устройства не назначен, DPS использует идентификатор регистрации в качестве идентификатора устройства. По умолчанию этот пример назначает myJavaDevice идентификатором устройства. Если вы хотите изменить идентификатор устройства, измените следующую инструкцию:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Если вы не хотите назначить определенный идентификатор устройства, закомментируйте следующую инструкцию:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. Пример позволяет настроить центр Интернета вещей в отдельной регистрации для подготовки устройства. Этот центр Интернета вещей должен быть центром Интернета вещей, который ранее был связан со службой подготовки. В этой статье мы позволим DPS выбрать из связанных центров в соответствии с политикой распределения по умолчанию равномерное распределение. Закомментируйте следующую инструкцию в файле:

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. Пример создает, обновляет, запрашивает и удаляет отдельную регистрацию устройств TPM. Чтобы проверить успешную регистрацию на портале, временно закомментируйте следующие строки кода в конце файла:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Сохранение изменений.

Запуск примера отдельной регистрации

  1. Запустите пример:

    dotnet run
    
  2. После успешного создания в окне командной строки отобразятся свойства новой регистрации.

Чтобы запустить пример, вам потребуется строка подключения для службы подготовки, скопированной в предыдущем разделе, и ключа подтверждения для устройства. Если вы последовали за кратким руководством по созданию и подготовке имитированного устройства для создания имитированного устройства TPM, используйте ключ подтверждения, созданный для этого устройства. В противном случае вы можете создать пример индивидуальной регистрации с помощью стандартного ключа подтверждения, который входит в пакет SDK для службы Node.js:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Чтобы создать отдельную регистрацию устройства TPM, выполните следующую команду (сохранив кавычки для аргументов команд):

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. После успешного создания в окне командной строки отобразятся свойства новой регистрации.

  1. В папке azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample в командной строке выполните следующую команду, чтобы создать пример:

    mvn install -DskipTests
    

    Эта команда загружает пакет клиента службы Azure IoT DPS Maven на компьютер и создает пример. Этот пакет включает двоичные файлы для пакета SDK службы Java.

  2. Перейдите в целевую папку и запустите пример. Сборка на предыдущем шаге выводит JAR-файл в целевой папке со следующим форматом файла: например: service-enrollment-sample-{version}-with-deps.jarservice-enrollment-sample-1.8.1-with-deps.jar Возможно, потребуется заменить версию в следующей команде.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. После успешного создания в окне командной строки отобразятся свойства новой регистрации.

Чтобы убедиться, что была создана отдельная регистрация:

  1. В портал Azure перейдите к экземпляру службы подготовки устройств.

  2. В меню Параметры выберите Управление регистрациями.

  3. Перейдите на вкладку "Отдельные регистрации ". Вы увидите новую запись регистрации, соответствующую идентификатору регистрации, используемому в примере.

Screenshot that shows verifying enrollment for a C# individual device in the portal.

Screenshot that shows verifying enrollment for a Node.js individual device in the portal.

Screenshot that shows verifying enrollment for a Java individual device in the portal.

Регистрация имитированного устройства (необязательно)

Если вы выполнили действия, описанные в кратком руководстве по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, возобновите краткое руководство по регистрации устройства.

Если вы выполнили действия, описанные в кратком руководстве по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, возобновите краткое руководство по регистрации устройства.

Если вы выполнили действия, описанные в кратком руководстве по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, возобновите краткое руководство по регистрации устройства.

Очистка ресурсов

Если вы планируете изучить учебники DPS, не убирайте ресурсы, созданные в этой статье. В противном случае выполните следующие действия, чтобы удалить все ресурсы, созданные этой статьей.

  1. В портал Azure перейдите к экземпляру службы подготовки устройств.

  2. В меню Параметры выберите Управление регистрациями.

  3. Перейдите на вкладку "Отдельные регистрации ".

  4. Выберите поле проверка рядом с идентификатором регистрации записи регистрации, созданной в этой статье.

  5. В верхней части страницы выберите команду Удалить.

  1. Если вы выполнили инструкции в статье Создание и подготовка имитированного устройства доверенного платформенного модуля, чтобы создать устройство доверенного платформенного модуля, следуйте приведенным ниже инструкциям.

    1. На портале Azure перейдите в Центр Интернета вещей, в котором подготовлено устройство.

    2. В меню слева в разделе "Управление устройствами" выберите "Устройства".

    3. Выберите поле проверка рядом с идентификатором устройства, зарегистрированного в этой статье.

    4. В области вверху выберите Удалить.

  1. Если вы выполнили инструкции в статье Создание и подготовка имитированного устройства доверенного платформенного модуля, чтобы создать устройство доверенного платформенного модуля, следуйте приведенным ниже инструкциям.

    1. Закройте окно симулятора TPM и окно примера выходных данных имитируемого устройства.

    2. На портале Azure перейдите в Центр Интернета вещей, в котором подготовлено устройство.

    3. В меню слева в разделе "Управление устройствами" выберите "Устройства".

    4. Выберите поле проверка рядом с идентификатором устройства, зарегистрированного в этой статье.

    5. В области вверху выберите Удалить.

  1. Если вы выполнили инструкции в статье Создание и подготовка имитированного устройства доверенного платформенного модуля, чтобы создать устройство доверенного платформенного модуля, следуйте приведенным ниже инструкциям.

    1. Закройте окно симулятора TPM и окно примера выходных данных имитируемого устройства.

    2. На портале Azure перейдите в Центр Интернета вещей, в котором подготовлено устройство.

    3. В меню слева в разделе "Управление устройствами" выберите "Устройства".

    4. Выберите поле проверка рядом с идентификатором устройства, зарегистрированного в этой статье.

    5. В области вверху выберите Удалить.

Следующие шаги

В этой статье вы программно создали отдельную запись регистрации для устройства доверенного платформенного модуля. Помимо этого, вы создали виртуальное устройство TPM на компьютере и подготовили его для Центра Интернета вещей с помощью службы подготовки устройств к добавлению в Центр Интернета вещей Azure. Для дальнейшего изучения проверка следующие ссылки: