Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как программно создать отдельную регистрацию для устройства TPM в службе подготовки устройств Центр Интернета вещей Azure с помощью пакета SDK службы DPS Центр Интернета вещей Azure и примера приложения. После создания отдельной регистрации можно при необходимости зарегистрировать имитированное устройство доверенного платформенного платформенного модуля в службе подготовки с помощью этой записи регистрации.
В этой статье описана работа с компьютером под управлением Windows, но эта процедура применима для компьютеров под управлением как Windows, так и Linux.
Необходимые компоненты
-
Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
Выполните шаги из руководства по быстрому началу работы: настройка службы подготовки устройств концентраторов IoT с использованием портала Azure.
Установите пакет SDK для .NET 6.0 на компьютере под управлением Windows. Вы можете проверить установленную версию с помощью приведенной ниже команды.
dotnet --infoЭто важно
Для сборки и запуска примера кода в этой статье необходимо использовать пакет SDK для .NET 6.0. В настоящее время пример не работает с более поздними версиями пакета SDK.
(Необязательно) Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте процедуре в Быстрый старт: Подготовка имитированного устройства TPM до шага, в котором вы получите ключ подтверждения для устройства. Сохраните ключ подтверждения, как вы его используете далее в этой статье.
Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.
Установите Node.js 4.0 или более поздней версии.
(Optional) Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте указаниям в руководстве по быстрому старту: подготовка имитированного устройства с TPM до шага получения ключа поддержки и регистрационного идентификатора для устройства. Сохраните ключ подтверждения и идентификатор регистрации, как они используются далее в этой статье.
Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.
Установите пакет SDK для Java SE 8. В этой статье устанавливается пакет SDK службы Java далее в статье. Он поддерживает операционные системы Linux и Windows. В этой статье используется Windows.
Установите Maven 3.
Установите Git и убедитесь, что путь добавляется в переменную
PATHсреды.(Optional) Если вы хотите зарегистрировать имитированное устройство в конце этой статьи, следуйте процедуре в Кратком Руководстве: Настройка имитированного устройства TPM до шага, в котором вы получите ключ подтверждения для устройства. Обратите внимание на ключ подтверждения и идентификатор регистрации, так как они используются далее в этой статье.
Не выполняйте шаги по созданию отдельной регистрации с помощью портала Azure.
Получение строки подключения к службе подготовки
В этом примере используется строка подключения для службы подготовки.
Войдите на портал Azure.
В меню портала или на странице портала выберите все ресурсы.
Выберите экземпляр службы Device Provisioning Service.
В меню службы в разделе "Параметры" выберите политики общего доступа.
Выберите политику доступа, которую вы хотите использовать.
На панели "Политика доступа" скопируйте и сохраните основную строку подключения.
Создание примера для отдельной регистрации
В этом разделе показано, как создать консольное приложение .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 для подготовки имитированного устройства, используйте значения ID регистрации и ключа подтверждения, которые вы отметили в этом кратком руководстве.
Если вы используете эту статью для создания примера отдельной регистрации и не планируете использовать его для регистрации устройства, можно использовать следующее значение для ключа подтверждения:
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);Пример позволяет настроить центр Интернета вещей в отдельной регистрации для подготовки устройства. Эта IoT платформа должна быть той, которая ранее была связана со службой подготовки. В этой статье мы позволим 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.jarservice-enrollment-sample-1.8.1-with-deps.jarМожет потребоваться заменить версию в следующей команде.cd target java -jar ./service-enrollment-sample-1.8.1-with-deps.jarПосле успешного создания в окне командной строки отобразятся свойства новой регистрации.
Чтобы убедиться, что была создана индивидуальная регистрация:
В портал Azure перейдите к экземпляру службы подготовки устройств.
В меню службы в разделе "Параметры" выберите "Управление регистрацией".
Перейдите на вкладку "Отдельные регистрации ". Вы увидите новую запись регистрации, соответствующую идентификатору регистрации, используемому в примере.
Регистрация имитированного устройства (необязательно)
Если вы следовали шагам в Кратком руководстве: Подготовка симулированного устройства TPM для подготовки симулированного устройства, продолжите руководство с Регистрация устройства.
Если вы выполнили шаги в статье Краткое руководство: Подготовка имитированного устройства доверенного платформенного модуля, продолжайте краткое руководство, начиная с раздела Регистрация устройства.
Если вы следовали шагам в статье Краткое руководство: Подготовка имитированного устройства TPM, возобновите выполнение действий с Регистрация устройства.
Очистка ресурсов
Если вы планируете изучить учебники DPS, не убирайте ресурсы, созданные в этой статье. В противном случае выполните следующие действия, чтобы удалить все ресурсы, созданные этой статьей.
В портал Azure перейдите к экземпляру службы подготовки устройств.
В меню службы в разделе "Параметры" выберите "Управление регистрацией".
Перейдите на вкладку "Отдельные регистрации ".
Установите флажок рядом с идентификатором регистрации записи регистрации, созданной в этой статье.
В области вверху выберите Удалить.
Если вы следовали шагам, описанным в кратком руководстве: подготовка имитированного устройства TPM для создания устройства доверенного платформенного модуля, выполните следующие действия:
На портале Azure перейдите в Центр Интернета вещей, где было подготовлено ваше устройство.
В меню службы в разделе "Управление устройствами" выберите "Устройства".
Установите флажок рядом с идентификатором устройства, зарегистрированного в этой статье.
В области вверху выберите Удалить.
Если вы выполнили действия, описанные в кратком руководстве Подготовка имитированного устройства TPM для создания имитированного устройства TPM, выполните следующие действия.
Закройте окно симулятора TPM и окно примера выходных данных имитируемого устройства.
На портале Azure перейдите в Центр Интернета вещей, где было подготовлено ваше устройство.
В меню службы в разделе "Управление устройствами" выберите "Устройства".
Установите флажок рядом с идентификатором устройства, зарегистрированного в этой статье.
В области вверху выберите Удалить.
Если вы выполнили действия, описанные в кратком руководстве: Подготовка имитированного устройства TPM для создания имитированного устройства доверенного платформенного модуля, выполните следующие действия.
Закройте окно симулятора TPM и окно примера выходных данных имитируемого устройства.
На портале Azure перейдите в Центр Интернета вещей, где было подготовлено ваше устройство.
В меню службы в разделе "Управление устройствами" выберите "Устройства".
Установите флажок рядом с идентификатором устройства, зарегистрированного в этой статье.
В области вверху выберите Удалить.
Следующие шаги
В этой статье вы программно создали отдельную запись регистрации для устройства доверенного платформенного модуля. Помимо этого, вы создали виртуальное устройство TPM на компьютере и подготовили его для Центра Интернета вещей с помощью службы подготовки устройств к добавлению в Центр Интернета вещей Azure. Чтобы узнать больше, ознакомьтесь со следующими ссылками:
Дополнительные сведения об аттестации доверенного платформенного модуля с помощью DPS см. в статье аттестации доверенного платформенного модуля.
Полный пример сквозной подготовки устройства с помощью индивидуальной регистрации и аттестации TPM см. в кратком руководстве по подготовке симулированного устройства TPM.
Сведения об управлении отдельными регистрациями и группами регистрации с помощью портала Azure см. в статье "Управление регистрацией устройств" на портале Azure.