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


Аутентификация подчиненного устройства в Центре Интернета вещей

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

Внимание

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

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

Примечание.

Нижестоящему устройству выдаются данные непосредственно в Интернет или на устройства шлюза (с поддержкой IoT Edge или нет). Дочернее устройство может быть подчиненным устройством или устройством шлюза в вложенной топологии.

Для настройки успешного подключения к прозрачному шлюзу необходимо выполнить три шага. Эта статья посвящена второму шагу.

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

Подчиненные устройства могут проходить проверку подлинности в центре Интернета вещей одним из трех способов: ключи содержимого (иногда называемые общими ключами доступа), самозаверяющие сертификаты X.509 или сертификаты X.509 (CA), подписанные центром сертификации. Шаги проверки подлинности аналогичны шагам, используемым для настройки любого устройства не из IoT Edge с помощью центра Интернета вещей, с единственным исключением: требуется объявление отношения шлюза.

Автоматическая подготовка подчиненных устройств с помощью Службы подготовки устройств к добавлению в Центр Интернета вещей Azure не поддерживается.

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

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

Если вы используете проверку подлинности X.509, вы создадите сертификаты для подчиненного устройства. Получите один и тот же корневой сертификат ЦС и скрипт создания сертификата, при помощи которого вы повторно использовали прозрачную статью шлюза, доступную для такого использования.

В этой статье имя узла шлюза упоминается в нескольких контекстах. Имя узла шлюза объявляется в параметре hostname файла конфигурации на устройстве шлюза IoT Edge. Он также упоминается в строке подключения подчиненного устройства. Имя узла шлюза должно разрешаться в IP-адрес с использованием DNS или записи файла узла на подчиненном устройстве.

Зарегистрируйте устройство в Центре Интернета вещей

Выберите способ проверки подлинности подчиненного устройства в Центре Интернета вещей:

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

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

  • Аутентификация с самозаверяющим сертификатом X.509. Иногда называется аутентификацией по отпечатку, потому что вы передаете отпечаток из сертификата X.509 устройства в Центр Интернета вещей.

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

  • Аутентификация с подписью ЦС X.509. Загрузите сертификат корневого ЦС в Центр Интернета вещей. Когда устройства представляют сертификат X.509 для проверки подлинности, Центр Интернета вещей проверяет, относится ли он к цепочке доверия, подписанной одним и тем же сертификатом корневого ЦС.

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

Проверка подлинности с использованием симметричного ключа

Проверка подлинности с использованием ключа содержимого или ключа общего доступа является самым простым способом проверки подлинности в центре Интернета вещей. Если используется проверка подлинности с использованием ключа содержимого, ключ Base64 связывается с идентификатором устройства IoT в центре Интернета вещей. Этот ключ необходимо добавить в приложения IoT, чтобы устройство указывало его при подключении к центру Интернета вещей.

Добавьте новое устройство IoT в центр Интернета вещей, используя портал Azure, Azure CLI или расширение IoT для Visual Studio Code. Помните, что подчиненные устройства должны идентифицироваться в центре Интернета вещей как обычные устройства IoT, а не устройства IoT Edge.

При создании нового удостоверения устройства укажите следующие сведения.

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

  • В качестве типа проверки подлинности выберите Ключ содержимого.

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

    Снимок экрана: создание идентификатора устройства с авторизацией симметричного ключа в портал Azure.

    Примечание.

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

    Можно настроить центр IoT Edge для возврата к предыдущему поведению, задав для переменной среды AuthenticationMode значение CloudAndScope.

Для выполнения той же операции также можно использовать расширение IoT для Azure CLI. В следующем примере для создания нового устройства IoT с проверкой подлинности с симметричным ключом и назначения родительского устройства используется команда az iot hub device-identity:

az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}

Совет

Вы можете перечислить свойства устройства, включая область устройства с помощью az iot hub device-identity list --hub-name {iothub name}.

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

Аутентификация с помощью самозаверяющего сертификата X.509

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

  1. Используя сертификат ЦС, создайте два сертификата устройства (основной и дополнительный) для подчиненного устройства.

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

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

  2. Получите отпечаток SHA1 (т. н. отпечаток в интерфейсе центра Интернета вещей) из каждого сертификата, который является строкой шестнадцатеричного символа 40. Используйте следующую команду OpenSSL для просмотра сертификата и поиска отпечатка:

    • Windows:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
      
    • Linux:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
      

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

  3. Перейдите в центр Интернета вещей на портале Azure и создайте новое удостоверение устройства IoT со следующими значениями:

    • Укажите идентификатор устройства, соответствующий имени субъекта для сертификатов устройств.
    • В качестве типа проверки подлинности выберите самозаверяющий сертификат X.509.
    • Вставьте шестнадцатеричные строки, скопированные из основного и дополнительного сертификатов устройства.
    • Выберите Задать родительское устройство и выберите шлюз IoT Edge, посредством которого будет подключаться это подчиненное устройство. Вы всегда можете сменить родительское устройство позже.

    Снимок экрана: создание идентификатора устройства с самозаверяющей авторизацией X.509 в портал Azure.

  4. Скопируйте первичные и вторичные сертификаты устройств и их ключи в любое расположение на подчиненном устройстве. Переместите копию общего сертификата корневого ЦС, который создал сертификат устройства шлюза и подчиненные сертификаты устройства.

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

  5. Ознакомьтесь с примерами ссылок на сертификаты X.509 в приложениях IoT в различных языках программирования.

Для выполнения той же операции по созданию устройства можно также использовать расширение IoT для Azure CLI. В следующем примере для создания нового устройства IoT с проверкой подлинности на основе самозаверяющего сертификата X.509 и назначения родительского устройства используется команда az iot hub device-identity:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

Совет

Вы можете перечислить свойства устройства, включая область устройства с помощью az iot hub device-identity list --hub-name {iothub name}.

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

Аутентификация с подписью ЦС X.509

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

Этот раздел основан на серии руководств по сертификату X.509 Центра Интернета вещей. Введение в эту серию см. в статье Общие сведения о криптографии с открытым ключом и инфраструктуре открытых ключей X.509.

  1. Используя сертификат ЦС, создайте два сертификата устройства (основной и дополнительный) для подчиненного устройства.

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

  2. Следуйте инструкциям в разделе Демонстрация подтверждения владения в статье Настройка безопасности с использованием сертификата X.509 в Центре Интернета вещей Azure. В этом разделе описывается выполнение следующих шагов.

    1. Передача сертификата корневого ЦС. Если вы используете демонстрационные сертификаты, корневой ЦС — <path>/certs/azure-iot-test-only.root.ca.cert.pem.

    2. Убедитесь, что вы владеете сертификатом корневого ЦС.

  3. Следуйте инструкциям в разделе Создание устройства в Центре Интернета вещей в статье Настройка безопасности с использованием сертификата X.509 в центре Интернета вещей Azure. В этом разделе описывается выполнение следующих шагов.

    1. Добавление нового устройства. Введите имя идентификатора устройства в нижнем регистре и выберите тип проверки подлинности сертификат X.509, подписанный ЦС.

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

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

  5. Скопируйте сертификат и ключи устройства в любое расположение на подчиненном устройстве. Переместите копию общего сертификата корневого ЦС, который создал сертификат устройства шлюза и подчиненные сертификаты устройства.

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

  6. Ознакомьтесь с примерами ссылок на сертификаты X.509 в приложениях IoT в различных языках программирования.

Для выполнения той же операции по созданию устройства можно также использовать расширение IoT для Azure CLI. В следующем примере для создания нового устройства IoT с проверкой подлинности с подписью ЦС X.509 и назначения родительского устройства используется команда az iot hub device-identity:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_ca

Совет

Вы можете перечислить свойства устройства, включая область устройства с помощью az iot hub device-identity list --hub-name {iothub name}.

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

Получение и изменение строки подключения

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

Для строк подключения для подчиненных устройств требуются следующие компоненты:

  • Центр Интернета вещей, к которому подключается устройство: Hostname={iothub name}.azure-devices.net
  • Идентификатор устройства, зарегистрированный в Центре Интернета вещей: DeviceID={device ID}
  • Метод проверки подлинности, независимо от того, является ли симметричный ключ или сертификаты X.509
    • Если используется проверка подлинности с симметричным ключом, укажите первичный или вторичный ключ: SharedAccessKey={key}
    • Если используется проверка подлинности с сертификатом X.509, укажите флаг: x509=true
  • Шлюз, через который подключается устройство. Задайте значение параметра hostname из файла конфигурации для шлюза IoT Edge: GatewayHostName={gateway hostname}

Таким образом, полная строка подключения выглядит следующим образом:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

Или сделайте так:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice

Благодаря иерархическим отношениям вы можете упростить строку подключения, вызвав шлюз напрямую как узел подключения. Например:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

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

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

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

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