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


Создание и подготовка IoT Edge для Linux на устройстве Windows с помощью сертификатов X.509

Область применения: Флажок IoT Edge 1.4 IoT Edge 1.4

Внимание

Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

В этой статье приведены комплексные инструкции по регистрации и подготовке IoT Edge для Linux на устройстве Windows.

Каждое устройство, которое подключается к Центру Интернета вещей, имеет идентификатор устройства, который используется для отслеживания передачи данных из облака на устройство и с устройства в облако. Вы настраиваете устройство, используя сведения о его подключении, включая имя узла Центра Интернета вещей, идентификатор устройства и сведения, используемые устройством для проверки подлинности в Центре Интернета вещей.

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

  • Симметричные ключи. При создании удостоверения устройства в Центр Интернета вещей служба создает два ключа. Вы помещаете один ключ на устройство и предоставляете ключ Центру Интернета вещей при проверке подлинности.

    Этот метод проверки подлинности быстрее настроить, но он не такой безопасный.

  • Самозаверяющий сертификат X.509. Вы создаете два сертификата удостоверения X.509 и размещаете их на устройстве. При создании нового удостоверения устройства в Центре Интернета вещей вы предоставляете отпечатки обоих сертификатов. Когда устройство проходит проверку подлинности в Центре Интернета вещей, оно предоставляет один сертификат, и Центр Интернета вещей проверяет, соответствует ли сертификат своему отпечатку.

    Этот метод проверки подлинности является более безопасным и рекомендуется для рабочих сценариев.

В этой статье рассматривается использование сертификатов X.509 в качестве метода проверки подлинности. Если вы хотите использовать симметричные ключи, см. статью "Создание и подготовка IoT Edge для Linux на устройстве Windows с помощью симметричного ключа".

Примечание.

Если у вас есть много устройств для настройки и не требуется вручную подготовить каждую из них, используйте одну из следующих статей, чтобы узнать, как IoT Edge работает с службой подготовки устройств Центр Интернета вещей:

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

В этой статье описывается регистрация устройства IoT Edge и установка IoT Edge для Linux в Windows. Эти задачи имеют различные предварительные требования и служебные программы, используемые для их выполнения. Перед продолжением убедитесь, что у вас есть все предварительные требования.

Средства управления устройствами

Для регистрации устройства можно использовать портал Azure, Visual Studio Code или Azure CLI. Каждая программа имеет собственные предварительные требования или может потребоваться установить следующее:

Центр Интернета вещей (бесплатно или уровня "Стандартный") в подписке Azure.

Требования к устройствам

Устройство Windows со следующими минимальными требованиями:

  • Требования к системе

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 и Windows Server 2019 минимальной сборки 17763 со всеми текущими накопительными обновлениями.
  • Требования к аппаратному обеспечению

    • Минимальная свободная память: 1 ГБ
    • Минимальный объем свободного места на диске: 10 ГБ
  • Поддержка виртуализации

  • Поддержка сетей

    • Для сервера Windows Server отсутствует коммутатор по умолчанию. Прежде чем можно будет развернуть EFLOW на устройстве Windows Server, необходимо создать виртуальный коммутатор. Дополнительные сведения см. статье о создании виртуального коммутатора для Linux в Windows.
    • В версиях Windows для настольных систем есть коммутатор по умолчанию, который можно использовать для установки EFLOW. При необходимости можно создать собственный настраиваемый виртуальный коммутатор.

Совет

Если вы собираетесь использовать модули Linux с ускорением GPU в развертывании Azure IoT Edge для Linux в Windows, есть несколько вариантов настройки.

Вам потребуется установить правильные драйверы в зависимости от архитектуры GPU, а также может потребоваться доступ к сборке программы предварительной оценки Windows. Сведения о том, как определить и выполнить предварительные условия для настройки, см. в статье об ускорении GPU в Azure IoT Edge для Linux в Windows.

Убедитесь, что вам потребуется время, чтобы удовлетворить предварительные требования для ускорения GPU. Вам потребуется перезапустить процесс установки, если вы решите, что требуется ускорение GPU во время установки.

Средства разработчика

Подготовьте целевое устройство для установки Azure IoT Edge для Linux в Windows и развертывания виртуальной машины Linux:

  1. Задайте для целевого устройства AllSignedполитику выполнения. Текущую политику выполнения можно проверить в командной строке PowerShell с повышенными привилегиями, выполнив следующую команду:

    Get-ExecutionPolicy -List
    

    Если политика выполнения local machine не AllSigned, можно установить политику выполнения с помощью следующей команды:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Дополнительные сведения о модуле Azure IoT Edge для Linux в Windows PowerShell см. в справочнике по функциям PowerShell.

Создание сертификатов удостоверений устройств

Для подготовки вручную с помощью сертификатов 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 создаются и управляются отдельно от устройств Интернета вещей, которые не включены в пограничные устройства.

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

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

  3. На странице Создание устройства введите приведенные ниже сведения:

    • Создайте описательный идентификатор устройства. Запишите этот идентификатор устройства, как вы его используете позже.
    • Установите флажок устройства 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.

    Совет

    Если вы тестируете и хотите использовать один сертификат, можно использовать один и тот же сертификат для первичных и вторичных отпечатков.

  4. Выберите Сохранить.

Теперь, когда устройство зарегистрировано в Центр Интернета вещей, получите сведения, используемые для завершения установки и подготовки среды выполнения IoT Edge.

Просмотр зарегистрированных устройств и получение сведений о подготовке

Устройства, использующие проверку подлинности сертификата X.509, нуждаются в имени центра Интернета вещей, имени устройства и их файлах сертификатов для завершения установки и подготовки среды выполнения IoT Edge.

На странице "Устройства", подключенные к центру Интернета вещей, отображаются устройства с поддержкой пограничных устройств . Список можно фильтровать по типам устройств IoT Edge.

Установка Edge Интернета вещей

Создайте развертывание Azure IoT Edge для Linux в Windows на целевом устройстве.

Примечание.

В следующем примере процедуры для PowerShell показано, как развернуть IoT Edge для Linux в Windows на локальном устройстве. Для развертывания на удаленном целевом устройстве с помощью PowerShell используйте удаленный сеанс PowerShell, чтобы установить подключение к удаленному устройству и дистанционно выполнить эти команды на нем.

  1. В сеансе PowerShell с повышенными привилегиями выполните любую из следующих команд в зависимости от архитектуры целевого устройства, чтобы скачать IoT Edge для Linux в Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Установите IoT Edge для Linux на Windows на ваше устройство.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Можно указать нестандартные каталоги для установки IoT Edge для Linux в Windows и VHDX, добавив параметры INSTALLDIR="<FULLY_QUALIFIED_PATH>" и VHDXDIR="<FULLY_QUALIFIED_PATH>" в приведенную выше команду установки. Например, если вы хотите использовать папку D:\EFLOW для установки и D:\EFLOW-VHDX для VHDX , можно использовать следующий командлет PowerShell.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. На целевом устройстве задайте политику выполнения AllSigned, если она еще не задана. См. предварительные требования PowerShell для команд, чтобы проверить текущую политику выполнения и задать для нее значение AllSigned.

  4. Создание развертывания IoT Edge для Linux в Windows. Развертывание создает виртуальную машину Linux и устанавливает среду выполнения IoT Edge для вас.

    Deploy-Eflow
    

    Совет

    По умолчанию команда Deploy-Eflow создает вашу виртуальную машину Linux с 1 ГБ ОЗУ, 1 ядром виртуального ЦП и 16 ГБ дискового пространства. Однако ресурсы, необходимые вашей виртуальной машине, сильно зависят от развертываемых вами рабочих нагрузок. Если у вашей виртуальной машины недостаточно памяти для поддержки ваших рабочих нагрузок, она не запустится.

    Вы можете настроить доступные ресурсы виртуальной машины, используя дополнительные параметры команды Deploy-Eflow. Это необходимо для развертывания EFLOW на устройстве с минимальными требованиями к оборудованию.

    Например, следующая команда создает виртуальную машину с 1 виртуальным ЦП, 1 ГБ ОЗУ (представлено в МБ) и 2 ГБ дискового пространства:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Дополнительные сведения о всех доступных необязательных параметрах см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.

    Предупреждение

    По умолчанию виртуальная машина EFLOW Linux не имеет конфигурации DNS. Развертывания с помощью DHCP попытаются получить конфигурацию DNS, распространяемую DHCP-сервером. Проверьте конфигурацию DNS, чтобы обеспечить подключение к Интернету. Дополнительные сведения см. в статье AzEFLOW-DNS.

    Чтобы использовать модули Linux с ускорением GPU, можно назначить развертыванию устройство GPU. Чтобы получить доступ к этим функциям, необходимо установить необходимые компоненты, подробные сведения об ускорениях GPU для Azure IoT Edge для Linux в Windows.

    Чтобы использовать сквозное руководство GPU, добавьте в команду параметры Deploy-Eflow gpuName, gpuPassthroughType и gpuCount. Дополнительные сведения о всех доступных необязательных параметрах см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.

    Предупреждение

    Включение сквозной передачи устройства может повысить уровень угрозы безопасности. Майкрософт рекомендует установить драйвер для защиты устройства от поставщика GPU. Дополнительные сведения см. в статье о развертывании графических процессоров путем прямого назначения устройств.

  5. Введите "Y", чтобы принять условия лицензии.

  6. Введите "O" или "R" для включения или отключения передачи Необязательных диагностических данных в зависимости от ваших предпочтений.

  7. После завершения развертывания в окне PowerShell появится сообщение об успешном развертывании.

    Успешное развертывание будет говорить

    После успешного развертывания вы готовы подготовить устройство.

Предоставление облачного удостоверения устройству

Вы готовы настроить устройство с помощью сведений об удостоверении облака и аутентификации.

Чтобы подготовить устройство с помощью сертификатов X.509, вам потребуется имя центра Интернета вещей, идентификатор устройства и абсолютные пути к сертификату удостоверения и закрытому ключу на главном компьютере Windows.

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

Выполните указанную ниже команду в сеансе PowerShell с повышенными правами на целевом устройстве. Замените текст заполнителя собственным значением.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Дополнительные сведения о команде Provision-EflowVM см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.

Проверка успешной настройки

Убедитесь, что служба IoT Edge для Linux в Windows успешно установлена и настроена на вашем устройстве IoT Edge.

  1. Войдите в IoT Edge для Linux на виртуальной машине Windows с помощью следующей команды в сеансе PowerShell:

    Connect-EflowVm
    

    Примечание.

    Единственная учетная запись, которой разрешено подключение к виртуальной машине по протоколу SSH, — это учетная запись пользователя, который создал эту машину.

  2. После входа можно проверить список выполняющихся модулей IoT Edge с помощью следующей команды Linux:

    sudo iotedge list
    
  3. Если вам нужно устранить неполадки в работе службы IoT Edge, используйте следующие команды Linux.

    1. Получение журналов службы.

      sudo iotedge system logs
      
    2. Используйте инструмент check для проверки конфигурации и состояния соединения устройства.

      sudo iotedge check
      

    Примечание.

    На недавно подготовленном устройстве может появиться ошибка, связанная с Центром IoT Edge:

    × рабочей готовности: каталог хранилища Edge Hub сохраняется в файловой системе узла — ошибка

    Не удалось проверить текущее состояние контейнера edgeHub

    Эта ошибка ожидается на недавно подготовленном устройстве, так как модуль Центра Интернета вещей не запущен. Чтобы устранить ошибку, в Центр Интернета вещей задайте модули для устройства и создайте развертывание. Создание развертывания для устройства запускает модули на устройстве, включая модуль Центра IoT Edge.

При создании нового устройства IoT Edge он отображает код 417 -- The device's deployment configuration is not set состояния в портал Azure. Это состояние является нормальным и означает, что устройство готово к развертыванию модуля.

Удаление IoT Edge для Linux в Windows

Если вы хотите удалить Azure IoT Edge для Linux на устройстве, выполните следующие команды.

  1. Открытие параметров в Windows
  2. Выберите "Добавить или удалить программы"
  3. Выбор приложения Azure IoT Edge
  4. Выберите "Удалить"

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