Создание и подготовка устройств IoT Edge в масштабе в Linux с помощью сертификатов X.509
Область применения: IoT Edge 1.1
Внимание
Дата окончания поддержки IoT Edge 1.1 была 13 декабря 2022 г. Чтобы получить сведения о поддержке определенного продукта, службы, технологии или API, перейдите на страницу Политика жизненного цикла поддержки Майкрософт. Дополнительные сведения об обновлении до последней версии IoT Edge см. в разделе "Обновление IoT Edge".
В этой статье приведены комплексные инструкции по автоматической подготовке одного или нескольких устройств Linux IoT Edge с помощью сертификатов X.509. Вы можете автоматически подготовить устройства Azure IoT Edge с помощью службы подготовки устройств Центр Интернета вещей Azure (DPS). Если вы не знакомы с процессом автоматической подготовки, ознакомьтесь с обзором подготовки, прежде чем продолжить.
Для этого необходимо выполнить следующие задачи:
- Создание сертификатов и ключей.
- Создайте отдельную регистрацию для одного устройства или группы для набора устройств.
- Установка среды выполнения IoT Edge и регистрация устройства в Центре Интернета вещей.
Применение сертификатов X.509 в качестве механизма аттестации позволяет легко масштабировать производство и упростить подготовку устройств к работе. Сертификаты X.509 обычно организованы в цепочки доверия. Начиная с самозаверяющего или доверенного корневого сертификата каждый сертификат в цепочке подписывает следующий сертификат, который находится на более низком уровне. Этот шаблон создает делегированную цепочку доверия из корневого сертификата вниз по каждому промежуточному сертификату до окончательного нижнего сертификата устройства, установленного на устройстве.
Совет
Если устройство имеет аппаратный модуль безопасности (HSM), например TPM 2.0, рекомендуется безопасно хранить ключи X.509 в HSM. Дополнительные сведения о реализации подготовки нулевого касания в масштабе, описанной в этой схеме, см. в примере iotedge-tpm2cloud.
Необходимые компоненты
Облачные ресурсы
- Активный Центр Интернета вещей
- Экземпляр службы подготовки устройств Центр Интернета вещей в Azure, связанный с центром Интернета вещей
- Если у вас нет экземпляра службы подготовки устройств, следуйте инструкциям в кратком руководстве по созданию новой службы подготовки устройств Центр Интернета вещей и связыванию центра Интернета вещей и служб подготовки устройств в кратком руководстве по Центр Интернета вещей службе подготовки устройств.
- После запуска службы подготовки устройств скопируйте значение области идентификатора на странице обзора. Это значение используется при настройке среды выполнения IoT Edge.
Требования к устройствам
Физическое или виртуальное устройство Linux, которое должно быть устройством IoT Edge.
Создание сертификатов удостоверений устройств
Сертификат удостоверения устройства — это подчиненный сертификат устройства, который подключается через цепочку сертификатов доверия к верхнему сертификату центра сертификации X.509 (ЦС). Сертификат удостоверения устройства должен иметь общее имя (CN) для идентификатора устройства, который должен иметь устройство в Центре Интернета вещей.
Сертификаты удостоверений устройств используются только для подготовки устройства IoT Edge и проверки подлинности устройства в Центре Интернета вещей Azure. Они не подписывают сертификаты, в отличие от сертификатов ЦС, которые устройство IoT Edge предоставляет модулям или подчиненным устройствам для проверки. Дополнительные сведения см. в разделе об использовании сертификатов Azure IoT Edge.
После создания сертификата удостоверения устройства необходимо два файла: CER или PEM, который содержит открытую часть сертификата, и CER или PEM с закрытым ключом сертификата. Если вы планируете использовать групповую регистрацию в DPS, вам также потребуется открытая часть промежуточного или корневого сертификата ЦС в той же цепочке сертификатов доверия.
Чтобы настроить автоматическую подготовку с помощью X.509, вам потребуются следующие файлы:
- Сертификат удостоверения устройства и сертификат его закрытого ключа. Сертификат удостоверения устройства отправляется в DPS при создании отдельной регистрации. Закрытый ключ передается в среду выполнения IoT Edge.
- Полный сертификат цепочки, который должен содержать, по крайней мере, удостоверение устройства и промежуточные сертификаты. Полный сертификат цепочки передается в среду выполнения IoT Edge.
- Промежуточный или корневой сертификат ЦС из цепочки доверия сертификатов. Этот сертификат отправляется в службу DPS, если вы создаете групповую регистрацию.
Примечание.
В настоящее время ограничение в libiothsm запрещает использование сертификатов, срок действия которых истекает с 1 января 2038 г.
Использование тестовых сертификатов (необязательно)
Если у вас нет доступного центра сертификации для создания новых сертификатов удостоверений и вы хотите испытать этот сценарий, репозиторий Azure IoT Edge в Git содержит сценарии, которые можно использовать для создания тестовых сертификатов. Эти сертификаты предназначены только для тестирования разработки и не должны использоваться в рабочей среде.
Чтобы создать тестовые сертификаты, выполните действия, описанные в статье Создание демонстрационных сертификатов для тестирования функций устройств IoT Edge. Заполните два необходимых раздела, чтобы настроить скрипты создания сертификатов и создать корневой сертификат ЦС. Затем выполните действия по созданию сертификата удостоверения устройства. По завершении у вас должны быть следующие цепочки сертификатов и пары ключей:
<WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
<WRKDIR>/private/iot-edge-device-identity-<name>.key.pem
Оба сертификата необходимы на устройстве IoT Edge. Если вы собираетесь использовать отдельную регистрацию в DPS, отправьте файл .cert.pem. Если вы планируете использовать групповую регистрацию в DPS, вам также потребуется отправить промежуточный или корневой сертификат ЦС в той же цепочке доверия сертификатов. Если вы используете демонстрационные сертификаты, используйте сертификат <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem
для групповой регистрации.
Создание регистрации в Службе подготовки устройств к добавлению в Центр Интернета вещей
Используйте созданные сертификаты и ключи для создания регистрации в DPS для одного или нескольких устройств IoT Edge.
Если вы хотите подготовить одно устройство IoT Edge, создайте отдельную регистрацию. Если требуется подготовка нескольких устройств, выполните действия по созданию регистрации группы DPS.
При регистрации в Службе подготовки устройств к добавлению в Центр Интернета вещей есть возможность объявить Первоначальное состояние двойника устройства. В двойнике устройства можно задать теги для группировки устройств по любой требуемой для решения метрике, например по региону, среде, расположению или типу устройства. Эти теги используются для создания автоматических развертываний.
Дополнительные сведения о регистрации в службе подготовки устройств см. в статье "Управление регистрацией устройств".
Создание индивидуальной регистрации DPS
Отдельные регистрации принимают открытую часть сертификата удостоверения устройства и сопоставляют ее с сертификатом на устройстве.
Совет
Действия, описанные в этой статье, предназначены для портал Azure, но вы также можете создать отдельные регистрации с помощью Azure CLI. Дополнительные сведения см. в разделе az iot dps enrollment. В команде интерфейса командной строки с помощью флага edge-enabled укажите, что регистрация предназначена для устройства IoT Edge.
В портал Azure перейдите к экземпляру службы подготовки устройств Центр Интернета вещей.
В разделе Параметрывыберите Управление регистрациями.
Выберите Добавить отдельную регистрацию и выполните следующие действия для настройки регистрации.
Механизм: выберите X.509.
Файл первичного сертификата PEM или CER: отправьте открытый файл из сертификата удостоверения устройства. Если вы использовали сценарии для создания тестового сертификата, выберите следующий файл:
<WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem
Идентификатор устройства в Центре Интернета вещей: если необходимо, укажите идентификатор устройства. Идентификаторы устройств можно использовать, чтобы указать отдельное устройство для развертывания модуля. Если не указать идентификатор устройства, используется общее имя (CN) в сертификате X.509.
Устройство IoT Edge: выберите значение True, чтобы указать, что это регистрация устройства IoT Edge.
Выберите центры Интернета вещей, которым может быть назначено это устройство: выберите связанный центр Интернета вещей, к которому вы хотите подключить устройство. Можно выбрать несколько центров, и устройство будет назначено одному из них в соответствии с выбранной политикой распределения.
Начальное состояние двойника устройства: при желании добавьте значение тега в двойник устройства. Теги можно использовать для указания групп устройств для автоматического развертывания. Например:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Выберите Сохранить.
В разделе "Управление регистрацией" можно просмотреть идентификатор регистрации для только что созданной регистрации. Запишите его, так как его можно использовать при подготовке устройства.
После создания регистрации для устройства среда выполнения IoT Edge может автоматически подготавливать устройство во время установки.
Установка Edge Интернета вещей
В этом разделе описана подготовка виртуальной машины Linux или физического устройства для IoT Edge. Затем установите IoT Edge.
Выполните следующие команды, чтобы добавить репозиторий пакетов, а затем добавить ключ подписи пакета Майкрософт в список доверенных ключей.
Внимание
30 июня 2022 года Raspberry Pi OS Stretch вышел из списка поддержки ОС уровня 1. Чтобы избежать потенциальных уязвимостей системы безопасности, обновите операционную систему узла до Bullseye.
Установка может выполняться с помощью нескольких команд. Откройте терминал и выполните следующие команды:
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
18.04:
wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Примечание.
Использование программных пакетов Azure IoT Edge регулируется условиями лицензии, содержащейся в самих пакетах (в usr/share/doc/{package-name}
или в каталоге LICENSE
). Прежде чем использовать пакет, ознакомьтесь с условиями лицензии. Установка и использование пакета означают, что вы принимаете эти условия. Если вы с ними не согласны, не используйте пакет.
Установка платформы контейнеров
Служба Azure IoT Edge использует среду выполнения контейнера, совместимую с OCI. В рабочих сценариях рекомендуется использовать подсистему Moby. Модуль Moby является единственным обработчиком контейнеров, официально поддерживаемым IoT Edge. Образы контейнеров Docker (Community Edition или Enterprise Edition) совместимы со средой выполнения Moby.
Установите модуль Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
После успешной установки подсистемы Moby настройте его для использования local
драйвера ведения журнала в качестве механизма ведения журнала. Дополнительные сведения о настройке ведения журнала см . в контрольном списке развертывания рабочей среды.
Создайте или откройте файл
/etc/docker/daemon.json
конфигурации управляющей программы Docker.Задайте драйвер ведения журнала по умолчанию драйверу
local
ведения журнала, как показано в приведенном ниже примере.{ "log-driver": "local" }
Перезапустите обработчик контейнеров, чтобы изменения вступили в силу.
sudo systemctl restart docker
Совет
Если при установке подсистемы контейнеров Moby возникают ошибки, проверьте совместимость ядра Linux для Moby. Некоторые производители встраиваемых устройств поставляют образы устройств, которые содержат нестандартные ядра Linux, без функций, необходимых для совместимости с обработчиком контейнеров. Выполните следующую команду, которая использует скрипт check-config, предоставленный Moby, для проверки конфигурации ядра:
curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh chmod +x check-config.sh ./check-config.sh
Просмотрите выходные данные скрипта и убедитесь, что в разделах
Generally Necessary
иNetwork Drivers
включены все элементы. Если отсутствуют функции, включите их, перестроив ядро из источника и выбрав связанные модули для включения в соответствующую конфигурацию ядра. Аналогичным образом, если вы используете генератор конфигурации ядра, напримерdefconfig
илиmenuconfig
, найдите и включите соответствующие функции и перестроите ядро соответствующим образом. После развертывания нового измененного ядра запустите скрипт check-config еще раз, чтобы убедиться, что все необходимые функции были успешно включены.
Установка среды выполнения IoT Edge
Управляющая программа безопасности IoT Edge обеспечивает безопасность и соответствие стандартам безопасности на устройстве IoT Edge. Управляющая программа запускается при каждой загрузке устройства и перезагружает устройство, запуская остальные компоненты среды выполнения IoT Edge.
Действия, описанные в этом разделе, представляют типичный процесс установки последней версии на устройстве, подключенном к Интернету. Если необходимо установить определенную версию, например предварительную версию или установить ее в автономном режиме, следуйте инструкциям по установке автономной или конкретной версии, приведенным далее в этой статье.
Установите IoT Edge версии 1,1.* вместе с пакетом libiothsm-std:
sudo apt-get update; \
sudo apt-get install iotedge
Примечание.
IoT Edge версии 1.1 является ветвью долгосрочной поддержки IoT Edge. Если вы используете более раннюю версию, рекомендуем установить последнее исправление или выполнить обновление до него, так как более старые версии больше не поддерживаются.
Предоставление облачного удостоверения устройству
После установки среды выполнения на устройстве настройте устройство с информацией, которую он использует для подключения к службе подготовки устройств и Центр Интернета вещей.
Подготовьте следующие сведения:
- Значение области идентификаторов DPS. Вы можете узнать это значение на странице обзора в экземпляре DPS на портале Azure.
- Файл цепочки сертификатов удостоверений устройств на устройстве.
- Файл ключа удостоверений устройств на устройстве.
Откройте файл конфигурации на устройстве IoT Edge.
sudo nano /etc/iotedge/config.yaml
Найдите в нем раздел конфигурации подготовки. Раскомментируйте строки для подготовки DPS с сертификатом X.509 и убедитесь, что все остальные строки подготовки закомментированы.
Строка
provisioning:
не должна содержать предшествующих пробелов, а вложенные элементы должны иметь отступ в два пробела.# DPS X.509 provisioning configuration provisioning: source: "dps" global_endpoint: "https://global.azure-devices-provisioning.net" scope_id: "SCOPE_ID_HERE" attestation: method: "x509" # registration_id: "OPTIONAL_REGISTRATION_ID_LEAVE_COMMENTED_OUT_TO_REGISTER_WITH_CN_OF_IDENTITY_CERT" identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE_HERE" identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY_HERE" # always_reprovision_on_startup: true # dynamic_reprovisioning: false
Обновите значения параметров
scope_id
,identity_cert
иidentity_pk
с помощью сведений о DPS и устройстве.При добавлении сертификата X.509 и сведений о ключе в файл config.yaml эти пути должны быть указаны в виде URI файлов. Например:
file:///<path>/identity_certificate_chain.pem
file:///<path>/identity_key.pem
При необходимости укажите
registration_id
для устройства, который требуется для сопоставления общего имени сертификата удостоверения. Если оставить такую строку закомментированной, будет автоматически применено общее имя.При необходимости используйте строки
always_reprovision_on_startup
илиdynamic_reprovisioning
для настройки поведения повторной подготовки устройства. Если устройство настроено для повторной подготовки при запуске, оно всегда будет пытаться выполнить подготовку сначала с помощью DPS, а затем обратится к резервному методу подготовки при сбое. Если устройство настроено для динамической повторной подготовки, IoT Edge (и все модули) перезапустится и перепроименуется, если обнаружено событие повторной подготовки, например, если устройство перемещается из одной Центр Интернета вещей в другую. В частности, IoT Edge проверяет наличиеbad_credential
илиdevice_disabled
ошибки из пакета SDK для обнаружения события повторной подготовки. Чтобы активировать это событие вручную, отключите устройство в Центр Интернета вещей. Дополнительные сведения см. в разделе Основные понятия повторной подготовки устройств в Центре Интернета вещей.Сохраните и закройте файл config.yaml.
Перезапустите среду выполнения IoT Edge, чтобы активировать все изменения конфигурации, внесенные на устройстве.
sudo systemctl restart iotedge
Проверка установки
Если среда выполнения запущена успешно, можете перейти в Центр Интернета вещей и начать развертывание модулей IoT Edge на устройстве.
Можно проверить, используется ли отдельная регистрация, созданная в службе подготовки устройств. Перейдите к экземпляру службы подготовки устройств в портал Azure. Откройте сведения о регистрации для созданной индивидуальной регистрации. Обратите внимание, что регистрация имеет состояние назначено и указан идентификатор устройства.
Чтобы убедиться, что IoT Edge установлена и запущена успешно, выполните следующие команды на устройстве.
Проверьте состояние службы IoT Edge.
systemctl status iotedge
Проверьте журналы службы.
journalctl -u iotedge --no-pager --no-full
Просмотрите список запущенных модулей.
iotedge list
Следующие шаги
Процесс регистрации службы подготовки устройств позволяет задать идентификатор устройства и теги двойников устройств одновременно, когда вы подготавливаете новое устройство. Эти значения можно использовать для указания отдельных устройств или групп устройств с помощью автоматического управления устройствами. См. дополнительные сведения о развертывании и мониторинге модулей IoT Edge с поддержкой масштабирования с помощью портала Azure или Azure CLI.