Создание демонстрационных сертификатов для тестирования функций устройства IoT Edge

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

Важно!

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

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

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

Срок действия этих сертификатов истекает через 30 дней, и их не следует использовать в каком-либо производственном сценарии.

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

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

Компьютер для разработки с установленным Git.

Скачивание скриптов тестового сертификата и настройка рабочего каталога

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

Чтобы создать демонстрационные сертификаты на устройстве Windows, необходимо установить OpenSSL, затем клонировать скрипты создания сертификатов и настроить их для локального выполнения в PowerShell.

Установите OpenSSL

Установите OpenSSL для Windows на компьютере, который используется для создания сертификатов. Если на вашем устройстве Windows уже установлен пакет OpenSSL, убедитесь, что файл openssl.exe доступен по путям из переменной среды PATH.

Установить OpenSSL можно несколькими способами, в том числе следующими.

  • Простой способ. Загрузите и установите любые сторонние двоичные файлы OpenSSL, например из проекта OpenSSL на сайте SourceForge. Добавьте полный путь к файлу openssl.exe в переменную среды PATH.

  • Рекомендуемый способ. Скачайте исходный код OpenSSL и создайте двоичные файлы на компьютере самостоятельно или с помощью vcpkg. В следующих инструкциях используется vcpkg для скачивания исходного кода, а также компиляции и установки OpenSSL на компьютере Windows с помощью простых действий.

    1. Перейдите в каталог для установки vcpkg. Следуйте указаниям, чтобы скачать и установить vcpkg.

    2. После установки vcpkg выполните следующую команду из командной строки PowerShell, чтобы установить пакет OpenSSL для Windows x64. Обычно установка занимает около пяти минут.

      .\vcpkg install openssl:x64-windows
      
    3. Добавьте <vcpkg path>\installed\x64-windows\tools\openssl в переменную среды PATH, чтобы сделать файл openssl.exe доступным для вызова.

Подготовка сценариев в PowerShell

Репозиторий Azure IoT Edge в Git содержит сценарии, с помощью которых можно создавать тестовые сертификаты. В этом разделе вы клонируете репозиторий IoT Edge и выполните эти сценарии.

  1. Откройте окно PowerShell с правами администратора.

  2. Клонируйте репозиторий Git службы IoT Edge, который содержит скрипты для создания демонстрационных сертификатов. Используйте команду git clone или скачайте ZIP-файл.

    git clone https://github.com/Azure/iotedge.git
    
  3. Создайте каталог, в котором требуется работать, и скопируйте скрипты сертификатов там. Все файлы сертификатов и ключей будут созданы в этом каталоге.

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    Если репозиторий был загружен в виде ZIP-файла, то имя папки будет iotedge-master, а остальная часть пути остается той же.

  4. Включите PowerShell для выполнения скриптов.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Добавьте используемые сценариями функции в глобальное пространство имен PowerShell.

    . .\ca-certs.ps1
    

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

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

    Test-CACertsPrerequisites
    

Создание сертификата корневого ЦС

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

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

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

  1. Перейдите в рабочий каталог wrkdir , в котором размещены скрипты создания сертификатов.

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

    New-CACertsCertChain rsa
    

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

    certs\azure-iot-test-only.root.ca.cert.pem

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

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

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

Эти сертификаты работают вне зависимости от того, применяется ли подготовка устройств к добавлению вручную или же выполняется автоматическая подготовка с помощью Службы подготовки устройств к добавлению в Центр Интернета вещей Azure (DPS).

Сертификаты удостоверений устройств находятся в разделе Provisioning (Подготовка к добавлению) файла конфигурации на устройстве IoT Edge.

  1. Перейдите к рабочему каталогу wrkdir с скриптами создания сертификатов и корневым сертификатом ЦС.

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

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Имя, которое вы передаете этой команде, — это идентификатор устройства для устройства IoT Edge в Центр Интернета вещей.

  3. Команда удостоверений устройства создает несколько файлов сертификатов и ключей:

    Тип Файл Description
    Сертификат удостоверения устройства certs\iot-edge-device-identity-<device-id>.cert.pem Подписан промежуточным сертификатом, созданным ранее. Содержит только сертификат удостоверения. Укажите в файле конфигурации для отдельной регистрации DPS или Центр Интернета вещей подготовки.
    Полный сертификат цепочки certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Содержит полную цепочку сертификатов, включая промежуточный сертификат. Укажите в файле конфигурации для IoT Edge представление DPS для подготовки групповой регистрации.
    Закрытый ключ private\iot-edge-device-identity-<device-id>.key.pem Закрытый ключ, связанный с сертификатом удостоверения устройства. Необходимо указать в файле конфигурации до тех пор, пока вы используете проверку подлинности сертификата (отпечаток или ЦС) для DPS или Центр Интернета вещей.

Создание пограничных сертификатов ЦС

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

Сертификат пограничного ЦС также отвечает за создание сертификатов для модулей, работающих на устройстве, но среда выполнения IoT Edge может создавать временные сертификаты, если пограничный ЦС не настроен. Сертификаты ЦС Edge перейдите в раздел config.toml ЦС Edge файла на устройстве IoT Edge. Дополнительные сведения см. в статье о том, как Azure IoT Edge использует сертификаты.

  1. Перейдите к рабочему каталогу wrkdir с скриптами создания сертификатов и корневым сертификатом ЦС.

  2. Создайте сертификат ЦС IoT Edge и закрытый ключ с помощью следующей команды. Укажите имя для сертификата ЦС. Имя, переданное команде New-CACertsEdgeDevice, не должно совпадать с параметром имени узла в файле конфигурации или идентификатором устройства в Центр Интернета вещей.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Эта команда создает несколько файлов сертификатов и ключей. Следующая пара сертификатов и ключей должна быть скопирована на устройство IoT Edge и ссылаться на нее в файле конфигурации:

    • certs\iot-edge-device-ca-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-ca-<CA cert name>.key.pem

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

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

Проверить подлинность устройства IoT с помощью сертификатов X. 509 можно двумя способами: с помощью самозаверяющих сертификатов или с помощью сертификатов, подписанных центром сертификации (ЦС).

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

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

Самозаверяющие сертификаты

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

  1. Перейдите к рабочему каталогу wrkdir с скриптами создания сертификатов и корневым сертификатом ЦС.

  2. Создайте два сертификата (основной и вторичный) для подчиненного устройства. Простое соглашение об именовании — использовать для сертификатов имя устройства IoT, после которого добавляется метка "-primary" (основной) или "-secondary" (вторичный). Например:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

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

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. Извлеките отпечаток SHA1 (называемый отпечатком в Центр Интернета вещей контекстах) из каждого сертификата. Отпечаток — это шестнадцатеричная строка символа 40. Используйте следующую команду opensl, чтобы просмотреть сертификат и найти отпечаток:

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

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

Сертификаты, подписанные ЦС

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

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

  1. Отправьте файл сертификата корневого ЦС из рабочего каталога certs\azure-iot-test-only.root.ca.cert.pem в свой Центр Интернета вещей.

  2. Если автоматическая проверка не выбрана, используйте код, предоставленный в портал Azure, чтобы убедиться, что у вас есть сертификат корневого ЦС.

    New-CACertsVerificationCert "<verification code>"
    
  3. Создайте цепочку сертификатов для подчиненного устройства. Используйте тот же идентификатор устройства, под которым устройство зарегистрировано в Центре Интернета вещей Azure.

    New-CACertsDevice "<device id>"
    

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

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem