Управление сертификатами на устройстве IoT Edge

Применимо к: значок "Да" IoT Edge 1.1 Другие версии: IoT Edge 1.2

Применимо к: значок "Да" IoT Edge 1.2 Другие версии: IoT Edge 1.1

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

Установка рабочих сертификатов

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

Дополнительные сведения о различных типах сертификатов и их ролях см. в статье Описание использования сертификатов в Azure IoT Edge.

Примечание

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

Предварительные требования

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

Следует использовать собственный центр сертификации для создания следующих файлов:

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

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

Примечание

В настоящее время ограничение в libiothsm запрещает использование сертификатов, срок действия которых истекает 1 января 2038 г. или после этой даты.

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

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

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

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

При использовании IoT Edge для Linux в Windows необходимо использовать ключ SSH, расположенный в файле id_rsa Azure IoT Edge, для проверки подлинности передачи файлов между операционной системой узла и виртуальной машиной Linux. SCP с проверкой подлинности можно выполнить с помощью следующей команды:

C:\WINDOWS\System32\OpenSSH\scp.exe -i 'C:\Program Files\Azure IoT Edge\id_rsa' <PATH_TO_SOURCE_FILE> iotedge-user@<VM_IP>:<PATH_TO_FILE_DESTINATION>

Примечание

IP-адрес виртуальной машины Linux можно запросить с помощью команды Get-EflowVmAddr.

Если вы использовали примеры сценариев для создания демонстрационных сертификатов, скопируйте следующие файлы на устройство IoT-Edge:

  • Сертификат ЦС устройства: <WRKDIR>\certs\iot-edge-device-MyEdgeDeviceCA-full-chain.cert.pem
  • Закрытый ключ ЦС устройства: <WRKDIR>\private\iot-edge-device-MyEdgeDeviceCA.key.pem
  • Корневой ЦС: <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
  1. Откройте файл конфигурации управляющей программы безопасности IoT Edge.

    • Linux и IoT Edge для Linux в Windows: /etc/iotedge/config.yaml

    • Windows с использованием контейнеров Windows: C:\ProgramData\iotedge\config.yaml

  2. В файле config.yaml в качестве свойств certificate укажите файловый путь URI к файлам сертификатов и ключей на устройстве IoT Edge. Удалите символ # перед свойствами сертификата, чтобы раскомментировать четыре строки. Убедитесь, что перед строкой certificates: нет пробелов, а вложенные элементы отображаются с отступом в два пробела. Пример:

    • Linux и IoT Edge для Linux в Windows:

      certificates:
         device_ca_cert: "file:///<path>/<device CA cert>"
         device_ca_pk: "file:///<path>/<device CA key>"
         trusted_ca_certs: "file:///<path>/<root CA cert>"
      
    • Windows с использованием контейнеров Windows:

      certificates:
         device_ca_cert: "file:///C:/<path>/<device CA cert>"
         device_ca_pk: "file:///C:/<path>/<device CA key>"
         trusted_ca_certs: "file:///C:/<path>/<root CA cert>"
      
  3. На устройствах Linux убедитесь, что у пользователя iotedge есть разрешения на чтение каталога, содержащего сертификаты.

  4. Если вы ранее использовали на устройстве другие сертификаты для IoT Edge, перед запуском или перезапуском IoT Edge удалите файлы в следующих двух каталогах:

    • Linux и IoT Edge для Linux в Windows: /var/lib/iotedge/hsm/certs и /var/lib/iotedge/hsm/cert_keys

    • Windows с использованием контейнеров Windows: C:\ProgramData\iotedge\hsm\certs и C:\ProgramData\iotedge\hsm\cert_keys

  1. Откройте файл конфигурации управляющей программы безопасности IoT Edge: /etc/aziot/config.toml

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

    trust_bundle_cert = "file:///<path>/<root CA cert>"
    
  3. Найдите раздел [edge_ca] в файле config.toml. Раскомментируйте строки в этом разделе и укажите пути URI файлов для сертификата и файлов ключей на устройстве IoT Edge.

    [edge_ca]
    cert = "file:///<path>/<device CA cert>"
    pk = "file:///<path>/<device CA key>"
    
  4. Убедитесь, что у пользователя iotedge есть разрешения на чтение каталога, содержащего сертификаты.

  5. Если вы ранее использовали на устройстве другие сертификаты для IoT Edge, перед запуском или перезапуском IoT Edge удалите файлы в следующих двух каталогах:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys

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

IoT Edge автоматически создает сертификаты на устройстве в нескольких случаях, в том числе:

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

Дополнительные сведения о функциях различных сертификатов на устройстве IoT Edge см. в статье Описание использования сертификатов в Azure IoT Edge.

Для этих двух автоматически создаваемых сертификатов имеется возможность установки флага auto_generated_ca_lifetime_days в файле config, чтобы указать количество дней существования сертификатов.

Примечание

Существует третий автоматически создаваемый сертификат, который создается диспетчером безопасности IoT Edge, — сертификат сервера центра IoT Edge. Время существования этого сертификата всегда составляет 90 дней, но он автоматически обновляется до истечения срока действия. Значение auto_generated_ca_lifetime_days не влияет на этот сертификат.

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

  1. Чтобы настроить истечение срока действия сертификата, отличное от 90 дней по умолчанию, добавьте значение в днях в секцию certificates файла config.

    certificates:
      device_ca_cert: "<ADD URI TO DEVICE CA CERTIFICATE HERE>"
      device_ca_pk: "<ADD URI TO DEVICE CA PRIVATE KEY HERE>"
      trusted_ca_certs: "<ADD URI TO TRUSTED CA CERTIFICATES HERE>"
      auto_generated_ca_lifetime_days: <value>
    

    Примечание

    В настоящее время ограничение в libiothsm запрещает использование сертификатов, срок действия которых истекает 1 января 2038 г. или после этой даты.

  2. Удалите содержимое папки hsm, чтобы удалить ранее созданные сертификаты.

    • Linux и IoT Edge для Linux в Windows: /var/lib/iotedge/hsm/certs и /var/lib/iotedge/hsm/cert_keys

    • Windows с использованием контейнеров Windows: C:\ProgramData\iotedge\hsm\certs и C:\ProgramData\iotedge\hsm\cert_keys

  3. Перезапустите службу IoT Edge.

    • Linux и IoT Edge для Linux в Windows:
    sudo systemctl restart iotedge
    
    • Windows с использованием контейнеров Windows:
    Restart-Service iotedge
    
  4. Подтвердите настройку времени существования.

    • Linux и IoT Edge для Linux в Windows:
    sudo iotedge check --verbose
    
    • Windows с использованием контейнеров Windows:
    iotedge check --verbose
    

    Проверьте выходные данные в секции production readiness: certificates, где указывается количество дней до истечения срока действия автоматически создаваемых сертификатов ЦС устройства.

Дальнейшие действия

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