Ошибка использования TPM с IoT Edge на Yocto после запуска tpm2_takeowership

При настройке IoT Edge для использования TPM я получаю сообщение об ошибке: Ошибка: нет такого файла или каталога (ошибка ОС 2)

Раньше я запускал tpm2_takeownership, так что это, вероятно, способствующий фактор.

ОС: Yocto 2.3 (Linux reliagate-10-12 4.9.148-eurotech-ti # 1 Вт, 21 мая, 12:52:42 UTC 2019 armv7l armv7l armv7l GNU / Linux)

IoT Edge работает нормально, если я не использую TPM.

Мне удалось выполнить приведенную здесь инструкцию для tpm_device_provision: https://docs.microsoft.com/en-us/azure/iot-edge/how-to-auto-provision-simulated-device-linux и получите следующее вывод (то есть я могу успешно общаться с TPM).

root@reliagate-10-12:eMMC:~# ./tpm_device_provision
Gathering the registration information...

Registration Id:
2upzntec--REMOVED--drlxrtza

Endorsement Key:
AToAAQAL--REMOVED--9zGxyw==

Press any key to continue:

Я внес следующие изменения в свой config.yaml

provisioning:
  source: "dps"
  global_endpoint: "https://global.azure-devices-provisioning.net"
  scope_id: "0ne00045676"
  attestation:
    method: "tpm"
    registration_id: "2upzntec--REMOVED--drlxrtza"

Я внес необходимые изменения разрешений в tpm:

root@reliagate-10-12:eMMC:~# ls -all /dev/tpm0
crw-rw----. 1 tss iotedge 10, 224 May 16 14:44 /dev/tpm0

Я предоставил настройки в iotedge.service

root@reliagate-10-12:eMMC:~# systemctl cat iotedge.service
[Unit]
Description=Azure IoT Edge daemon
After=network-online.target docker.service iotedge.socket     iotedge.mgmt.socket
Requires=iotedge.socket iotedge.mgmt.socket
Wants=network-online.target docker.service
Documentation=man:iotedged(8)

[Service]
ExecStart=/usr/bin/iotedged -c /etc/iotedge/config.yaml
KillMode=process
TimeoutStartSec=600
TimeoutStopSec=40
Restart=on-failure
User=iotedge
Group=iotedge

[Install]
WantedBy=multi-user.target
Also=iotedge.socket iotedge.mgmt.socket

# /etc/systemd/system/iotedge.service.d/override.conf
[Service]
Environment=IOTEDGE_USE_TPM_DEVICE=ON

Я включил правила tpmaccess:

root@reliagate-10-12:eMMC:~# cat /etc/udev/rules.d/tpmaccess.rules
#allow iotedge access to tpm0
KERNEL=="tpm0", SUBSYSTEM=="tpm", GROUP="iotedge", MODE="0660"

Тем не менее, когда я запускаю journalctl -u iotedge --no-pager --no-full, я вижу следующую ошибку

Несколько мыслей:


person Kevin Saye    schedule 20.08.2019    source источник


Ответы (2)


Спасибо, Кевин

  1. Еще раз проверьте область действия и ключ подтверждения в DPS.
  2. Мы видели проблемы с инициализацией, когда IoT Edge запускается до того, как TPM готов. Возможно, вам придется настроить systemd, чтобы iotedged запускался медленнее. В этом случае iotedged зависит от TPM.
  3. Вы используете диспетчер ресурсов TPM?
  4. Другим кажется, что бег

Вы используете последние версии IoT Edge (1.0.8)?

person Kevin    schedule 21.08.2019
comment
20 августа 20:38:22 reliagate-10-12 systemd [1]: запущен демон Azure IoT Edge. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Использование файла конфигурации: /etc/iotedge/config.yaml 20 августа 20:38:22 reliagate -10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [INFO] - Запуск демона безопасности Azure IoT Edge 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20 : 38: 22Z [ИНФОРМАЦИЯ] - Версия - 1.0.7 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Использование идентификатора сети времени выполнения azure-iot -edge 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Инициализация среды выполнения модуля ... 20 августа 20:38:22 reliagate-10- 12 iotedged [3466]: 2019-08-20T20: 38: 22Z [INFO] - Инициализация времени выполнения модуля ... 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [INFO] - Успешно инициализирована среда выполнения модуля 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [INFO] - Завершена инициализация среды выполнения модуля. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Настройка / var / lib / iotedge в качестве домашнего каталога. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Настройка сертификатов ... 20 августа 20:38:22 reliagate-10-12 iotedged [3466 ]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Сертификаты прозрачного шлюза не найдены, работает в режиме быстрого запуска ... 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08- 20T20: 38: 22Z [ИНФОРМАЦИЯ] - Настройка сертификатов завершена. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Инициализация hsm ... 20 августа 20:38:22 reliagate-10-12 iotedged [3466 ]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Завершена инициализация HSM. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Определение изменений в файле конфигурации ... 20 августа 20:38:22 reliagate-10- 12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Изменений в файле конфигурации не обнаружено. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Получение CA рабочей нагрузки выполнено. 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [ИНФОРМАЦИЯ] - Предоставление пограничного устройства ... 20 августа 20:38:22 reliagate-10-12 iotedged [ 3466]: 2019-08-20T20: 38: 22Z [INFO] - Запуск периферийного устройства через TPM ... 20 августа 20:38:22 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 22Z [INFO] - Начало регистрации DPS с идентификатором scope_id "0ne00045676", registration_id "2upzntec - УДАЛЕНО - drlxrtza" 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ПРЕДУПРЕЖДЕНИЕ] - Не удалось подготовить устройство 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ПРЕДУПРЕЖДЕНИЕ] - Причина: не удалось получить ключ запроса TPM 20 августа 20 : 38: 23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ПРЕДУПРЕЖДЕНИЕ] - вызвано: Произошла ошибка в хранилище ключей. 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [WARN] - вызвано: отказ HSM 20 августа 20:38:23 reliagate-10-12 iotedged [3466 ]: 2019-08-20T20: 38: 23Z [ПРЕДУПРЕЖДЕНИЕ] - вызвано: произошел сбой API HSM: 342 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ERR!] - Демон не может успешно запуститься: не удалось инициализировать клиент инициализации DPS 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ERR!] - вызвано: Не удалось восстановить предыдущий результат инициализации 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ERR!] - Причина: Нет такого файла или каталога (os ошибка 2) 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ERR!] (/ home / build / my_project / yocto / build / tmp / work / cortexa8hf -neon-poky-linux-gnueabi / libiothsm-std / 1.0.7-r0 / iotedge-1.0.7 / edgelet / hsm-sys / azure-… icySecret () для EK 20 августа 20:38:23 reliagate-10- 12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ERR!] (/ Home /build/my_project/yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/libiothsm-std/1.0.7-r0/iotedge-1.0.7/edgelet/hsm-sys/azure-… Политика EK сеанс 20 августа 20:38:23 reliagate-10-12 iotedged [3466]: 2019-08-20T20: 38: 23Z [ERR!] (/ home / build / my_project / yocto / build / tmp / work / cortexa8hf-neon -poky-linux-gnueabi / libiothsm-std / 1.0.7-r0 / iotedge-1.0.7 / edgelet / hsm-sys / azure-… rting ключ в tpm 20 августа 20:38:23 reliagate-10-12 systemd [ 1]: iotedge.service: основной процесс завершен, код = завершен, статус = 1 / FAILURE 20 августа 20:38:23 reliagate-10-12 systemd [1]: iotedge.service: Ошибка с результатом «код выхода». 20 августа 20:38:23 reliagate-10-12 systemd [1]: iotedge.service: Service RestartSec = 100 мс истек, перезапуск по расписанию. 20 августа 20:38:23 reliagate-10-12 systemd [1]: iotedge.service: задание перезапуска по расписанию, счетчик перезапуска - 5. 20 августа 20:38:23 reliagate-10-12 systemd [1]: Azure остановлена. Демон IoT Edge. - person Kevin Saye; 30.08.2019

tpm2_takeownership -c

решил вопрос.

слои Yocto - это только версия 1.0.7 (github.com/Azure/meta-iotedge) . Я проверил прицел и идентификатор устройства, и они верны. Если бы это была проблема гонки, я бы подумал, что когда я попытаюсь перезапустить, это сработает, а это не так. Наконец, нет диспетчера ресурсов TPM. Я бы предположил, что ./tpm_device_provision не сработает, если бы это было так. Я действительно думаю, что это факт, что в прошлом я запускал tpm2_takeowership, и мне жаль, что я не знал, как фактор-сбросить TPM - если такой есть.

person Kevin Saye    schedule 02.12.2019