Создание и подготовка устройства IoT Edge в Linux с помощью сертификатов X.509
Область применения: IoT Edge 1.5 IoT Edge 1.4
Внимание
Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
В этой статье приведены комплексные инструкции по регистрации и подготовке устройства Linux IoT Edge, включая установку IoT Edge.
Каждое устройство, которое подключается к Центру Интернета вещей, имеет идентификатор устройства, который используется для отслеживания передачи данных из облака на устройство и с устройства в облако. Вы настраиваете устройство со сведениями о подключении, включающими имя узла Центра Интернета вещей, идентификатор устройства и сведения, которые устройство использует для проверки подлинности в Центр Интернета вещей.
Действия, описанные в этой статье, посвящены процессу, который называется подготовкой вручную, в ходе которого вы подключаете одно устройство к Центру Интернета вещей. Для подготовки вручную можно использовать два варианта проверки подлинности устройств IoT Edge:
Симметричные ключи. При создании удостоверения устройства в Центр Интернета вещей служба создает два ключа. Вы помещаете один ключ на устройство и предоставляете ключ Центру Интернета вещей при проверке подлинности.
Этот метод проверки подлинности быстрее настроить, но он не такой безопасный.
Самозаверяющий сертификат X.509. Вы создаете два сертификата удостоверения X.509 и размещаете их на устройстве. При создании нового удостоверения устройства в Центре Интернета вещей вы предоставляете отпечатки обоих сертификатов. Когда устройство проходит проверку подлинности в Центре Интернета вещей, оно предоставляет один сертификат, и Центр Интернета вещей проверяет, соответствует ли сертификат своему отпечатку.
Этот метод проверки подлинности является более безопасным и рекомендуется для рабочих сценариев.
В этой статье рассматривается использование сертификатов X.509 в качестве метода проверки подлинности. Если вы хотите использовать симметричные ключи, см. статью "Создание и подготовка устройства IoT Edge в Linux с помощью симметричного ключа".
Примечание.
Если у вас есть много устройств для настройки и не требуется вручную подготовить каждую из них, используйте одну из следующих статей, чтобы узнать, как IoT Edge работает с службой подготовки устройств Центр Интернета вещей:
Необходимые компоненты
В этой статье описывается регистрация устройства IoT Edge и установка IoT Edge на нем. Эти задачи имеют различные предварительные требования и служебные программы, используемые для их выполнения. Перед продолжением убедитесь, что у вас есть все предварительные требования.
Средства управления устройствами
Для регистрации устройства можно использовать портал Azure, Visual Studio Code или Azure CLI. Каждая программа имеет собственные предварительные требования или может потребоваться установить следующее:
Центр Интернета вещей (бесплатно или уровня "Стандартный") в подписке Azure.
Требования к устройствам
Устройство X64, ARM32 или ARM64 Linux.
Корпорация Майкрософт публикует пакеты установки для различных операционных систем.
Последние сведения о том, какие операционные системы в настоящее время поддерживаются для рабочих сценариев, см . в поддерживаемых системах Azure IoT Edge.
Создание сертификатов удостоверений устройств
Для подготовки вручную с помощью сертификатов X.509 требуется IoT Edge версии 1.0.10 или более поздней.
При подготовке устройства IoT Edge с сертификатами X.509 используется сертификат удостоверения устройства. Эти сертификаты используются только для подготовки устройства IoT Edge и проверки подлинности устройства в Центре Интернета вещей Azure. Это конечный сертификат, который не подписывает другие сертификаты. Сертификат удостоверения устройства отделен от сертификатов центра сертификации (ЦС), которые устройство IoT Edge предоставляет модулям или подчиненным устройствам для проверки.
Для проверки подлинности на основе сертификата X.509 данные проверки подлинности каждого устройства предоставляются в виде отпечатков, полученных из сертификатов удостоверений устройств. Эти отпечатки передаются в Центр Интернета вещей во время регистрации устройства, чтобы служба могла распознать устройство при подключении.
Дополнительные сведения об использовании сертификатов ЦС на устройствах IoT Edge см. в разделе Описание использования сертификатов в Azure IoT Edge.
Для подготовки вручную с помощью X.509 вам потребуются следующие файлы:
Два сертификата удостоверения устройства с соответствующими сертификатами закрытого ключа в форматах .cer или PEM. Для смены сертификатов требуется два сертификата удостоверения устройства. Рекомендуется подготовить два разных сертификата удостоверения устройства с разными датами окончания срока действия. Если срок действия одного сертификата истекает, другой по-прежнему действителен и дает время сменить истекший срок действия сертификата.
В среду выполнения IoT Edge предоставляется один набор файлов сертификатов и ключей. При создании сертификатов удостоверений устройств задайте общее имя сертификата (CN) с идентификатором устройства, которое должно иметь устройство в Центре Интернета вещей.
Отпечатки, взятые из сертификатов удостоверений устройств. Центр Интернета вещей требуется два отпечатка при регистрации устройства IoT Edge. Для регистрации можно использовать только один сертификат. Чтобы использовать один сертификат, задайте один и тот же отпечаток сертификата для первичных и вторичных отпечатков при регистрации устройства.
Значения отпечатков — это 40 шестнадцатеричных символов для хэшей SHA-1 или 64 шестнадцатеричных символа для хэшей SHA-256. Оба отпечатка предоставляются в Центре Интернета вещей во время регистрации устройства.
Одним из способов получения отпечатка из сертификата является следующая команда OpenSSL:
openssl x509 -in <certificate filename>.pem -text -fingerprint
Отпечаток включается в выходные данные этой команды. Например:
SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
Если у вас нет доступных сертификатов, можно создать демонстрационные сертификаты для тестирования функций устройства IoT Edge. Следуйте инструкциям в этой статье, чтобы настроить скрипты создания сертификатов, создать сертификат корневого ЦС и создать сертификат удостоверения устройства IoT Edge. Для тестирования можно создать один сертификат удостоверения устройства и использовать один и тот же отпечаток для значений первичной и вторичной отпечатков при регистрации устройства в Центр Интернета вещей.
Зарегистрировать устройство
Вы можете использовать портал Azure, Visual Studio Code или Azure CLI для регистрации устройства в зависимости от вашего предпочтения.
В Центре Интернета вещей в портал Azure устройства IoT Edge создаются и управляются отдельно от устройств Интернета вещей, которые не включены в пограничные устройства.
Войдите на портал Azure и перейдите к своему Центру Интернета вещей.
В левой области выберите "Устройства " в меню, а затем выберите " Добавить устройство".
На странице Создание устройства введите приведенные ниже сведения:
- Создайте описательный идентификатор устройства. Запишите этот идентификатор устройства, как вы его используете позже.
- Установите флажок устройства IoT Edge.
- В качестве типа проверки подлинности выберите самозаверяющий сертификат X.509.
- Укажите отпечатки первичного и вторичного сертификата удостоверения. Значения отпечатков — это 40 шестнадцатеричных символов для хэшей SHA-1 или 64 шестнадцатеричных символа для хэшей SHA-256. Портал Azure поддерживает только шестнадцатеричные значения. Удалите разделители столбцов и пробелы из значений отпечатка перед вводом на портале. Например,
D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
вводится какD268D9049F1A4D6AFD8477687BC633C032375112
.
Совет
Если вы тестируете и хотите использовать один сертификат, можно использовать один и тот же сертификат для первичных и вторичных отпечатков.
Выберите Сохранить.
Теперь, когда устройство зарегистрировано в Центр Интернета вещей, получите сведения, используемые для завершения установки и подготовки среды выполнения IoT Edge.
Просмотр зарегистрированных устройств и получение сведений о подготовке
Устройства, использующие проверку подлинности сертификата X.509, нуждаются в имени центра Интернета вещей, имени устройства и их файлах сертификатов для завершения установки и подготовки среды выполнения IoT Edge.
На странице "Устройства", подключенные к центру Интернета вещей, отображаются устройства с поддержкой пограничных устройств . Список можно фильтровать по типам устройств IoT Edge.
Установка Edge Интернета вещей
В этом разделе описана подготовка виртуальной машины Linux или физического устройства для IoT Edge. Затем установите IoT Edge.
Выполните следующие команды, чтобы добавить репозиторий пакетов, а затем добавить ключ подписи пакета Майкрософт в список доверенных ключей.
Внимание
30 июня 2022 года Raspberry Pi OS Stretch вышел из списка поддержки ОС уровня 1. Чтобы избежать потенциальных уязвимостей системы безопасности, обновите операционную систему узла до Bullseye.
Для поддерживаемых операционных систем платформы уровня 2 пакеты установки доступны в выпусках Azure IoT Edge. Ознакомьтесь с инструкциями по установке в автономном режиме или конкретной версии.
Установка может выполняться с помощью нескольких команд. Откройте терминал и выполните следующие команды:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
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
Дополнительные сведения о версиях операционной системы см . на поддерживаемых платформах Azure IoT Edge.
Примечание.
Использование программных пакетов Azure IoT Edge регулируется условиями лицензии, содержащейся в самих пакетах (в usr/share/doc/{package-name}
или в каталоге LICENSE
). Прежде чем использовать пакет, ознакомьтесь с условиями лицензии. Установка и использование пакета означают, что вы принимаете эти условия. Если вы с ними не согласны, не используйте пакет.
Установка платформы контейнеров
Служба Azure IoT Edge использует среду выполнения контейнера, совместимую с OCI. В рабочих сценариях рекомендуется использовать подсистему Moby. Модуль Moby — это обработчик контейнеров, официально поддерживаемый IoT Edge. Образы контейнеров Docker (Community Edition или Enterprise Edition) совместимы со средой выполнения Moby. Если вы используете оснастки Ubuntu Core, оснастка Docker обслуживается каноническим и поддерживается для рабочих сценариев.
Установите модуль Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
По умолчанию подсистема контейнеров не задает ограничения размера журнала контейнеров. Со временем это может привести к заполнению устройства журналами и исчерпанию дискового пространства. Однако вы можете настроить журнал для локального отображения, хотя это необязательно. Дополнительные сведения о настройке ведения журнала см . в контрольном списке развертывания рабочей среды.
Ниже показано, как настроить контейнер для использования local
драйвера ведения журнала в качестве механизма ведения журнала.
Создание или изменение существующего файла конфигурации управляющей программы Docker
sudo nano /etc/docker/daemon.json
Задайте драйвер ведения журнала по умолчанию драйверу
local
ведения журнала, как показано в примере.{ "log-driver": "local" }
Перезапустите обработчик контейнеров, чтобы изменения вступили в силу.
sudo systemctl restart docker
Установка среды выполнения IoT Edge
Служба IoT Edge обеспечивает безопасность и соответствие стандартам безопасности на устройстве IoT Edge. Служба запускается при каждой загрузке устройства и перезагружает устройство, запуская остальные компоненты среды выполнения IoT Edge.
Примечание.
Начиная с версии 1.2 служба удостоверений Интернета вещей обрабатывает подготовку и управление удостоверениями для IoT Edge и для других компонентов устройств, которые должны взаимодействовать с Центр Интернета вещей.
Действия, описанные в этом разделе, представляют собой типичный процесс установки последней версии IoT Edge на устройстве с подключением к Интернету. Если необходимо установить определенную версию, например предварительную версию или установить ее в автономном режиме, следуйте инструкциям по установке автономной или конкретной версии, приведенным далее в этой статье.
Совет
Если у вас уже есть устройство IoT Edge с более старой версией и хотите обновить до последней версии, выполните действия, описанные в разделе "Обновление управляющей программы безопасности IoT Edge и среды выполнения". Более поздние версии достаточно отличаются от предыдущих версий IoT Edge, которые необходимы для обновления конкретных шагов.
Установите последнюю версию IoT Edge и пакет службы удостоверений Интернета вещей (если вы еще не обновлены):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
Дополнительный defender-iot-micro-agent-edge
пакет включает микроагент безопасности Microsoft Defender для Интернета вещей, который обеспечивает видимость конечных точек в управлении безопасностью, уязвимостях, обнаружении угроз, управлении парками и многое другое, чтобы обеспечить безопасность устройств IoT Edge. Рекомендуется установить микроагент с агентом Edge, чтобы обеспечить мониторинг безопасности и защиту устройств Edge. Дополнительные сведения о Microsoft Defender для Интернета вещей см. в статье "Что такое Microsoft Defender для Интернета вещей для разработчиков устройств".
Предоставление облачного удостоверения устройству
Теперь, когда подсистема контейнеров и среда выполнения IoT Edge установлены на устройстве, вы можете настроить устройство с помощью удостоверений облака и сведений о проверке подлинности.
Создайте файл конфигурации для устройства на основе файла шаблона, предоставленного в процессе установки IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Откройте файл конфигурации на устройстве IoT Edge.
sudo nano /etc/aziot/config.toml
Найдите раздел Provisioning в файле и раскомментируйте строки для ручной подготовки с использованием сертификата удостоверения X.509. Убедитесь, что все остальные разделы подготовки закомментированы.
# Manual provisioning with x.509 certificates [provisioning] source = "manual" iothub_hostname = "REQUIRED_IOTHUB_HOSTNAME" device_id = "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB" [provisioning.authentication] method = "x509" identity_cert = "REQUIRED_URI_OR_POINTER_TO_DEVICE_IDENTITY_CERTIFICATE" identity_pk = "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"
Обновите следующие поля:
- iothub_hostname: имя узла Центр Интернета вещей, к которому подключается устройство. Например,
{IoT hub name}.azure-devices.net
. - DEVICE_ID: идентификатор, указанный при регистрации устройства.
- identity_cert: код URI для сертификата удостоверения, имеющегося на устройстве, например
file:///path/identity_certificate.pem
. Или же динамически выдайте сертификат с помощью средства EST или местного центра сертификации. - identity_pk: код URI файла закрытого ключа для предоставленного сертификата удостоверения, например:
file:///path/identity_key.pem
. Или укажите URI PKCS#11, а затем укажите сведения о конфигурации в
Далее раздел PKCS#11 в файле конфигурации.
Дополнительные сведения о сертификатах см. в разделе "Управление сертификатами IoT Edge".
Сохранить и закрыть файл.
CTRL + X
, , Y
Enter
После введения сведений о подготовке в файл конфигурации, примените изменения:
sudo iotedge config apply
Развертывание модулей
Чтобы развернуть модули IoT Edge, перейдите в центр Интернета вещей в портал Azure, а затем:
Выберите устройства в меню Центр Интернета вещей.
Выберите устройство, чтобы открыть страницу.
Перейдите на вкладку "Задать модули ".
Так как мы хотим развернуть модули по умолчанию IoT Edge (edgeAgent и edgeHub), нам не нужно добавлять в эту область модули, поэтому нажмите кнопку "Проверить и создать " в нижней части экрана.
Вы увидите подтверждение JSON для модулей. Выберите "Создать", чтобы развернуть модули.<
Дополнительные сведения см. в разделе "Развертывание модуля".
Проверка успешной настройки
Убедитесь, что среда выполнения успешно установлена и настроена на устройстве IoT Edge.
Совет
Для запуска команд iotedge
требуется более высокий уровень привилегий. После установки среды выполнения IoT Edge, выхода из компьютера и обратного входа ваши разрешения обновляются автоматически. До этого момента используйте перед командой префикс sudo
.
Убедитесь, что системная служба IoT Edge работает.
sudo iotedge system status
Ответ об успешном выполнении — Ok
.
Если нужно устранить неполадки со службой, извлеките журналы службы.
sudo iotedge system logs
Используйте инструмент check
для проверки конфигурации и состояния соединения устройства.
sudo iotedge check
Можно ожидать диапазон ответов, которые могут включать ОК (зеленый), предупреждение (желтый) или ошибку (красный). Сведения об устранении распространенных ошибок см. в статье "Решения распространенных проблем для Azure IoT Edge".
Совет
Всегда используйте sudo
для запуска средства проверки даже после обновления разрешений. Для проверки состояния конфигурации средству требуются повышенные права доступа к файлу конфигурации.
Примечание.
На недавно подготовленном устройстве может появиться ошибка, связанная с Центром IoT Edge:
× рабочей готовности: каталог хранилища Edge Hub сохраняется в файловой системе узла — ошибка
Не удалось проверить текущее состояние контейнера edgeHub
Эта ошибка ожидается на недавно подготовленном устройстве, так как модуль Центра Интернета вещей не запущен. Чтобы устранить ошибку, в Центр Интернета вещей задайте модули для устройства и создайте развертывание. Создание развертывания для устройства запускает модули на устройстве, включая модуль Центра IoT Edge.
Просмотрите данные обо всех модулях, запущенных на устройстве IoT Edge. После первого запуска службы можно видеть, что работает только модуль edgeAgent. Модуль edgeAgent запускается по умолчанию и позволяет установить и запустить любые дополнительные модули, развертываемые на устройстве.
sudo iotedge list
При создании нового устройства IoT Edge он отображает код 417 -- The device's deployment configuration is not set
состояния в портал Azure. Это состояние является нормальным и означает, что устройство готово к развертыванию модуля.
Автономная установка или установка определенной версии (необязательно)
Действия, описанные в этом разделе, предназначены для сценариев, не охваченных стандартными шагами по установке. Это может включать следующее:
- Установка IoT Edge в автономном режиме
- Установка версии релиз-кандидата
Выполните действия, описанные в этом разделе, если вы хотите установить определенную версию среды выполнения Azure IoT Edge, которая недоступна через диспетчер пакетов. Список пакетов Майкрософт содержит только ограниченный набор последних версий и их подверсий, поэтому эти действия предназначены для всех, кто хочет установить более старую версию или версию релиз-кандидат.
Если вы используете оснастки Ubuntu, вы можете скачать оснастки и установить его в автономном режиме. Дополнительные сведения см. в статье "Скачивание оснастки" и установка в автономном режиме.
С помощью команд в фигурных скобках можно обращаться непосредственно к файлам компонентов в репозитории GitHub IoT Edge.
Перейдите к выпускам Azure IoT Edge и найдите целевую версию выпуска.
Разверните раздел Ресурсы для этой версии.
Каждый выпуск должен содержать новые файлы для IoT Edge и службы идентификации. Если вы собираетесь установить IoT Edge на автономном устройстве, скачайте эти файлы заранее. В противном случае используйте следующие команды для обновления этих компонентов.
Найдите файл aziot-identity-service, соответствующий архитектуре устройства IoT Edge. Щелкните правой кнопкой мыши ссылку на файл и скопируйте ее адрес.
Используйте скопированную ссылку в следующей команде, чтобы установить эту версию службы идентификации.
curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
Найдите файл aziot-edge, соответствующий архитектуре устройства IoT Edge. Щелкните правой кнопкой мыши ссылку на файл и скопируйте ее адрес.
Используйте скопированную ссылку в следующей команде, чтобы установить эту версию IoT Edge.
curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
Удаление IoT Edge
Чтобы удалить файлы установки IoT Edge с устройства, используйте приведенные ниже команды.
Удалите среду выполнения IoT Edge.
sudo apt-get autoremove --purge aziot-edge
--purge
Оставьте флаг, если вы планируете переустановить IoT Edge и использовать те же сведения о конфигурации в будущем. Флаги --purge
удаляют все файлы, связанные с IoT Edge, включая файлы конфигурации.
При удалении среды выполнения IoT Edge все созданные с ее помощью контейнеры остановятся, но будут по-прежнему храниться на устройстве. Просмотрите все контейнеры, чтобы увидеть, какие из них остаются.
sudo docker ps -a
Удалите контейнеры с устройства, включая два контейнера в среде выполнения.
sudo docker rm -f <container name>
Наконец, удалите среду выполнения контейнера с устройства.
sudo apt-get autoremove --purge moby-engine