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


Настройка устройства IoT Edge для использования в качестве прозрачного шлюза

Область применения:Отметка IoT Edge 1.5 IoT Edge 1.5

Внимание

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

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

Примечание.

подчиненные устройства не поддерживают отправку файлов.

Существует три основных шага для настройки подключения шлюза в режиме прозрачности. В этой статье рассматривается первый шаг.

  1. Настройте устройство шлюза в качестве сервера, чтобы подчиненные устройства могли безопасно подключаться. Настройте шлюз для получения сообщений от подчиненных устройств и перенаправьте их в нужное место назначения.
  2. Создайте удостоверение устройства для нижестоящего устройства, чтобы он смог пройти проверку подлинности в Центре Интернета вещей. Настройте подчиненное устройство для отправки сообщений через устройство шлюза. Дополнительные сведения см. в разделе Аутентификация подчиненного устройства в Центре Интернета вещей.
  3. Подключите подчиненное устройство к устройству шлюза и начните отправку сообщений. Сведения о выполнении этих действий см. в статье Подключение подчиненного устройства к шлюзу Azure IoT Edge.

Чтобы работать в качестве шлюза, устройство должно безопасно подключаться к его подчиненным устройствам. Azure IoT Edge позволяет использовать инфраструктуру открытых ключей (PKI) для настройки безопасных подключений между устройствами. В этом случае нижнее устройство подключается к устройству IoT Edge, действующему в качестве прозрачного шлюза. Для обеспечения безопасности приемное устройство проверяет идентичность устройства шлюза. Эта проверка помогает предотвратить подключение устройств к вредоносным шлюзам.

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

Вы можете создать любую инфраструктуру сертификата, обеспечивающую доверие, необходимое для топологии "устройство — шлюз". В этой статье мы используем такую же настройку сертификатов, как и безопасность удостоверяющего центра X.509 в Центре Интернета вещей. В этой настройке используется сертификат ЦС X.509, связанный с определенным центром Интернета вещей (корневой ЦС Центра Интернета вещей), ряд сертификатов, подписанных этим ЦС, и ЦС для устройства IoT Edge.

Примечание.

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

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

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

Вам потребуется устройство Linux или Windows с установленным IoT Edge.

Если у вас нет устройства, создайте его на виртуальной машине Azure. Выполните действия, описанные в разделе Развертывание первого модуля IoT Edge на виртуальном устройстве Linux, чтобы создать Центр Интернета вещей, создать виртуальную машину и настроить среду выполнения IoT Edge.

Настройка сертификата ЦС Edge

Для всех шлюзов IoT Edge требуется сертификат ЦС Edge, установленный на них. Управляющая программа безопасности IoT Edge использует сертификат ЦС Edge для подписи сертификата ЦС рабочей нагрузки, который, в свою очередь, подписывает сертификат сервера для Центра IoT Edge. Шлюз предоставляет сертификат своего сервера подчиненному устройству при инициировании подключения. Подчиненное устройство проверяет, является ли сертификат сервера частью цепочки сертификатов, которая объединяется с сертификатом корневого ЦС. В результате этого процесса подчиненное устройство получает подтверждение того, что шлюз предоставлен надежным источником. Дополнительные сведения см. в статье Описание использования сертификатов в Azure IoT Edge.

Снимок экрана: настройка сертификата шлюза.

Корневой сертификат ЦС и сертификат ЦС Edge (с их закрытыми ключами) должны находиться на устройстве шлюза IoT Edge и быть заданы в файле конфигурации IoT Edge. В этом случае сертификат корневого ЦС означает высшую сертификационную инстанцию для этого сценария IoT Edge. Сертификат УЦ шлюза Edge и подчиненные сертификаты устройств должны сходиться к тому же самому корневому сертификату УЦ.

Совет

Процесс установки корневого сертификата ЦС и сертификата ЦС Edge на устройстве IoT Edge также объясняется более подробно в статье "Управление сертификатами на устройстве IoT Edge".

Подготовьте следующие файлы:

  • Корневой сертификат ЦС
  • Сертификат ЦС для пограничного устройства
  • Закрытый ключ ЦС устройства

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

Создание демонстрационных сертификатов

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

  1. Настройте скрипты для создания сертификатов на устройстве.
  2. Создайте сертификат корневого ЦС. В конце концов, у вас есть файл сертификата корневого центра сертификации (ЦС) <path>/certs/azure-iot-test-only.root.ca.cert.pem.
  3. Создание сертификатов ЦС Edge. В итоге у вас есть сертификат <path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem ЦС Edge и его закрытый ключ <path>/private/iot-edge-device-ca-<cert name>.key.pem.

Копирование сертификатов на устройство

  1. Проверьте, соответствует ли сертификат требованиям к формату.

  2. Если вы создали сертификаты на другом компьютере, скопируйте их на устройство IoT Edge. Используйте USB-диск, службу, например Azure Key Vault, или команду, например безопасную копию файлов.

  3. Переместите файлы в предпочтительный каталог для сертификатов и ключей: /var/aziot/certs для сертификатов и /var/aziot/secrets ключей.

  4. Создайте сертификаты и каталоги ключей и задайте разрешения. Сохраните сертификаты и ключи в предпочтительном /var/aziot каталоге: /var/aziot/certs для сертификатов и /var/aziot/secrets ключей.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
  5. Измените владение и разрешения для сертификатов и ключей.

    # Give aziotcs ownership to certificates
    # Read and write for aziotcs, read-only for others
    sudo chown -R aziotcs:aziotcs /var/aziot/certs
    sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
    
    # Give aziotks ownership to private keys
    # Read and write for aziotks, no permission for others
    sudo chown -R aziotks:aziotks /var/aziot/secrets
     sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
    

Настройка сертификатов на устройстве

  1. На устройстве IoT Edge откройте файл конфигурации: /etc/aziot/config.toml Если вы используете IoT Edge для Linux в Windows, подключитесь к виртуальной машине EFLOW с помощью командлета Connect-EflowVm PowerShell.

    Совет

    Если файл конфигурации еще не существует на вашем устройстве, используйте файл /etc/aziot/config.toml.edge.template в качестве шаблона для его создания.

  2. Найдите параметр trust_bundle_cert. Раскомментируйте эту строку и укажите URI файла сертификата корневого ЦС на устройстве.

  3. [edge_ca] Найдите раздел файла. Раскомментируйте три строки в этом разделе и укажите URI файлов для сертификата и файлов ключей в качестве значений для следующих свойств:

    • сертификат: сертификат пограничного ЦС
    • pk: закрытый ключ ЦС устройства
  4. Сохранить и закрыть файл.

  5. Примените изменения.

    sudo iotedge config apply
    

Развертывание edgeHub и маршрутизация сообщений

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

  • Модуль концентратора IoT Edge развернут на устройстве.

    При установке IoT Edge на устройстве запускается только один системный модуль: агент IoT Edge. При создании первого развертывания для устройства также запускаются второй системный модуль и центр IoT Edge. Если модуль edgeHub не запущен на вашем устройстве, создайте развертывание для своего устройства.

  • В модуле концентратора IoT Edge настроены маршруты для обработки входящих сообщений от подчиненных устройств.

    Устройству шлюза необходимо иметь маршрут для обработки сообщений от подключенных устройств, иначе эти сообщения не будут обработаны. Сообщения в модули можно отправить на устройстве шлюза или непосредственно в Центр Интернета вещей.

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

  1. На портале Azure перейдите в центр Интернета вещей.

  2. Перейдите к устройствам в меню управления устройствами и выберите устройство IoT Edge для использования в качестве шлюза.

  3. Щелкните Set Modules (Настроить модули).

  4. На странице "Модули" добавьте все модули, которые требуется развернуть на устройстве шлюза. В этой статье вы сосредоточены на настройке и развертывании модуля edgeHub, который не требуется явно задать на этой странице.

  5. Нажмите Далее: маршруты.

  6. На странице "Маршруты" убедитесь, что существует маршрут для обработки сообщений с подчиненных устройств. Например:

    • Маршрут, отправляющий все сообщения в Центр Интернета вещей, как из модуля, так и из подчиненного устройства:

      • Имя: allMessagesToHub
      • Значение: FROM /messages/* INTO $upstream
    • Маршрут, отправляющий все сообщения со всех подчиненных устройств в Центр Интернета вещей:

      • Имя: allDownstreamToHub
      • Значение: FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream

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

      Дополнительные сведения о маршрутизации сообщений см. в разделе Объявление маршрутов.

  7. После создания маршрута или маршрутов нажмите кнопку "Проверить и создать".

  8. На странице Отзыв и создание выберите Создать.

Открытие портов на устройстве шлюза

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

Чтобы сценарий шлюза работал, хотя бы один из поддерживаемых протоколов Центра Интернета вещей должен быть открыт для входящего трафика с подчиненных устройств. Поддерживаемые протоколы: MQTT, AMQP, HTTPS, MQTT через WebSockets и AMQP через WebSockets.

Порт Протокол
8883 Протокол передачи телеметрических сообщений MQTT
5671 AMQP
443 HTTPS
MQTT+WS
AMQP+WS

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

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