Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как программно создать отдельную регистрацию для устройства TPM в службе подготовки устройств Центр Интернета вещей Azure с помощью пакета SDK службы DPS Центр Интернета вещей Azure и примера приложения. После создания отдельной регистрации можно при необходимости зарегистрировать имитированное устройство доверенного платформенного платформенного модуля в службе подготовки с помощью этой записи регистрации.
В этой статье описана работа с компьютером под управлением Windows, но эта процедура применима для компьютеров под управлением как Windows, так и Linux.
-
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Выполните инструкции по настройке Службы подготовки устройств к добавлению в Центр Интернета вещей на портале Microsoft Azure.
Установите пакет 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.
В этом примере используется строка подключения для службы подготовки.
Войдите на портал Azure.
В меню слева на портале нажмите Все ресурсы.
Выберите службу Подготовки устройств.
В меню Параметры выберите Политики общего доступа.
Выберите политику доступа, которую вы хотите использовать.
На панели Политика доступа скопируйте и сохраните строку подключения первичного ключа.
В этом разделе показано, как создать консольное приложение .NET Core, которое добавляет в службу подготовки отдельные регистрации для устройства доверенного платформенного модуля.
Откройте командную строку Windows и перейдите в папку, в которой вы хотите создать приложение.
Чтобы создать консольный проект, выполните следующую команду:
dotnet new console --framework net6.0 --use-program-main
Чтобы добавить ссылку на пакет SDK службы DPS, выполните следующую команду:
dotnet add package Microsoft.Azure.Devices.Provisioning.Service
На этом шаге скачиваются, устанавливаются и добавляются ссылки на пакет NuGet клиента службы Azure IoT DPS и его зависимости. Этот пакет включает двоичные файлы для пакета SDK службы .NET.
Откройте файл Program.cs в редакторе.
Замените инструкцию пространства имен в верхней части файла следующим образом:
namespace CreateIndividualEnrollment;
Добавьте следующие
using
инструкции в верхней части файла над инструкциейnamespace
:using System.Threading.Tasks; using Microsoft.Azure.Devices.Provisioning.Service;
Добавьте следующие поля в класс
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 для подготовки имитированного устройства, замените ключ подтверждения значением, указанным в этом кратком руководстве. Идентификатор устройства и идентификатор регистрации можно заменить значениями, предлагаемыми в этом кратком руководстве, использовать собственные значения или использовать значения по умолчанию в этом примере.
Добавьте приведенный ниже метод в класс
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 } }
Осталось заменить метод
Main
следующими строками:static async Task Main(string[] args) { await RunSample(); Console.WriteLine("\nHit <Enter> to exit ..."); Console.ReadLine(); }
Сохранение изменений.
Совет
Для простоты в этом примере используется проверка подлинности SAS для подключения к API службы DPS. Более безопасный подход — использовать учетные данные токена Azure. Пример этого метода проверки подлинности см . в примере create_tpm_enrollment_with_token_credentials.js в пакете SDK Node.js.
В окне командной строки перейдите в рабочую папку и выполните следующую команду:
npm install azure-iot-provisioning-service
На этом шаге скачиваются, устанавливаются и добавляются ссылки на клиентский пакет службы Azure IoT DPS и его зависимости. Этот пакет включает двоичные файлы для пакета SDK службы Node.js.
С помощью текстового редактора создайте а рабочей папке файл 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)); } });
Сохраните файл.
Откройте командную строку Windows.
Клонируйте пакеты SDK Microsoft Azure IoT для репозитория Java GitHub:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Перейдите к образцу папки:
cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
Откройте файл \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java в редакторе.
Замените
[Provisioning Connection String]
строкой подключения, скопированной в разделе Получение строки подключения для службы подготовки.private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
Добавьте сведения об устройстве доверенного платформенного модуля. Замените приведенные
[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==";
Введите собственное значение для идентификатора регистрации.
Для отдельных регистраций можно задать идентификатор устройства, который DPS назначает устройству при подготовке устройства к Центр Интернета вещей. Если идентификатор устройства не назначен, DPS использует идентификатор регистрации в качестве идентификатора устройства. По умолчанию этот пример назначает myJavaDevice идентификатором устройства. Если вы хотите изменить идентификатор устройства, измените следующую инструкцию:
private static final String DEVICE_ID = "myJavaDevice";
Если вы не хотите назначить определенный идентификатор устройства, закомментируйте следующую инструкцию:
individualEnrollment.setDeviceId(DEVICE_ID);
Пример позволяет настроить центр Интернета вещей в отдельной регистрации для подготовки устройства. Этот центр Интернета вещей должен быть центром Интернета вещей, который ранее был связан со службой подготовки. В этой статье мы позволим DPS выбрать из связанных центров в соответствии с политикой распределения по умолчанию равномерное распределение. Закомментируйте следующую инструкцию в файле:
individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
Пример создает, обновляет, запрашивает и удаляет отдельную регистрацию устройств TPM. Чтобы проверить успешную регистрацию на портале, временно закомментируйте следующие строки кода в конце файла:
// *********************************** Delete info of individualEnrollment ************************************ System.out.println("\nDelete the individualEnrollment..."); provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
Сохранение изменений.
Запустите пример:
dotnet run
После успешного создания в окне командной строки отобразятся свойства новой регистрации.
Чтобы запустить пример, вам потребуется строка подключения для службы подготовки, скопированной в предыдущем разделе, и ключа подтверждения для устройства. Если вы последовали за кратким руководством по созданию и подготовке имитированного устройства для создания имитированного устройства TPM, используйте ключ подтверждения, созданный для этого устройства. В противном случае вы можете создать пример индивидуальной регистрации с помощью стандартного ключа подтверждения, который входит в пакет SDK для службы Node.js:
AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
Чтобы создать отдельную регистрацию устройства TPM, выполните следующую команду (сохранив кавычки для аргументов команд):
node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
После успешного создания в окне командной строки отобразятся свойства новой регистрации.
В папке azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample в командной строке выполните следующую команду, чтобы создать пример:
mvn install -DskipTests
Эта команда загружает пакет клиента службы Azure IoT DPS Maven на компьютер и создает пример. Этот пакет включает двоичные файлы для пакета SDK службы Java.
Перейдите в целевую папку и запустите пример. Сборка на предыдущем шаге выводит .jar файл в целевой папке со следующим форматом файла: например:
service-enrollment-sample-{version}-with-deps.jar
service-enrollment-sample-1.8.1-with-deps.jar
Может потребоваться заменить версию в следующей команде.cd target java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
После успешного создания в окне командной строки отобразятся свойства новой регистрации.
Чтобы убедиться, что была создана отдельная регистрация:
В портал Azure перейдите к экземпляру службы подготовки устройств.
В меню Параметры выберите Управление регистрациями.
Перейдите на вкладку "Отдельные регистрации ". Вы увидите новую запись регистрации, соответствующую идентификатору регистрации, используемому в примере.
Если вы выполнили действия, описанные в кратком руководстве по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, возобновите краткое руководство по регистрации устройства.
Если вы выполнили действия, описанные в кратком руководстве по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, возобновите краткое руководство по регистрации устройства.
Если вы выполнили действия, описанные в кратком руководстве по созданию и подготовке имитированного устройства TPM для подготовки имитированного устройства, возобновите краткое руководство по регистрации устройства.
Если вы планируете изучить учебники DPS, не убирайте ресурсы, созданные в этой статье. В противном случае выполните следующие действия, чтобы удалить все ресурсы, созданные этой статьей.
В портал Azure перейдите к экземпляру службы подготовки устройств.
В меню Параметры выберите Управление регистрациями.
Перейдите на вкладку "Отдельные регистрации ".
Установите флажок рядом с идентификатором регистрации записи регистрации, созданной в этой статье.
В верхней части страницы выберите команду Удалить.
Если вы выполнили инструкции в статье Создание и подготовка имитированного устройства доверенного платформенного модуля, чтобы создать устройство доверенного платформенного модуля, следуйте приведенным ниже инструкциям.
На портале Azure перейдите в Центр Интернета вещей, в котором подготовлено устройство.
В меню слева в разделе "Управление устройствами" выберите "Устройства".
Установите флажок рядом с идентификатором устройства, зарегистрированного в этой статье.
В области вверху выберите Удалить.
Если вы выполнили инструкции в статье Создание и подготовка имитированного устройства доверенного платформенного модуля, чтобы создать устройство доверенного платформенного модуля, следуйте приведенным ниже инструкциям.
Закройте окно симулятора TPM и окно примера выходных данных имитируемого устройства.
На портале Azure перейдите в Центр Интернета вещей, в котором подготовлено устройство.
В меню слева в разделе "Управление устройствами" выберите "Устройства".
Установите флажок рядом с идентификатором устройства, зарегистрированного в этой статье.
В области вверху выберите Удалить.
Если вы выполнили инструкции в статье Создание и подготовка имитированного устройства доверенного платформенного модуля, чтобы создать устройство доверенного платформенного модуля, следуйте приведенным ниже инструкциям.
Закройте окно симулятора TPM и окно примера выходных данных имитируемого устройства.
На портале Azure перейдите в Центр Интернета вещей, в котором подготовлено устройство.
В меню слева в разделе "Управление устройствами" выберите "Устройства".
Установите флажок рядом с идентификатором устройства, зарегистрированного в этой статье.
В области вверху выберите Удалить.
В этой статье вы программно создали отдельную запись регистрации для устройства доверенного платформенного модуля. Помимо этого, вы создали виртуальное устройство TPM на компьютере и подготовили его для Центра Интернета вещей с помощью службы подготовки устройств к добавлению в Центр Интернета вещей Azure. Чтобы узнать больше, ознакомьтесь со следующими ссылками:
Дополнительные сведения об аттестации доверенного платформенного модуля с помощью DPS см. в статье аттестации доверенного платформенного модуля.
Полный пример подготовки устройства с помощью отдельной регистрации с помощью аттестации доверенного платформенного модуля см. в кратком руководстве по подготовке имитированного устройства TPM.
Сведения об управлении отдельными группами регистрации и регистрацией с помощью портал Azure см. в статье "Управление регистрацией устройств с помощью портал Azure".