Вопрос или проблема
Я работаю над проектом, в котором плата имеет устройство TPM2. Идея состоит в том, чтобы поместить туда ключевую информацию и извлечь ее для загрузки сертификата. Я учусь по ходу дела, мне нужно использовать среды выполнения .NET 8, и я искал информацию в Интернете.
В .NET 8 есть рутина, которая, похоже, делает именно то, что мне нужно на Linux:
SafeEvpPKeyHandle.OpenPrivateKeyFromEngine
И есть вопрос на StackOverflow, который, кажется, указывает на точное решение, которое мне нужно.
Как использовать сертификат X.509, сгенерированный на TPM для Azure DPS на Linux и C#
Но он говорит об “openssl engine”, который называется “tpm2tss”, и я не знаю, как его установить и запустить. Я пытался установить различные пакеты tpm2-tss и tpm2-tss-engine (что сложно, потому что устройство, которое я использую, “ограничено” в том, что оно может делать – например, apt/apt-get не работают, но snap работает, и я могу загружать .deb пакеты и устанавливать их).
Небольшое обновление. Мне удалось заставить работать старую версию OpenSSL 1.1.1 libengine-tpm2… на Ubuntu 22.04. Это устанавливалось в папку engines-1.1. Это потребовало понижения версии установленного OpenSSL3 и нахождения более старых зависимостей.
Но мне не удалось заставить работать новую версию OpenSSL3 на 22.04. И я также не смог выполнить операции TPM, которые я пытался сделать.
Если кто-нибудь может дать совет о том, что нужно для того, чтобы сделать engine OpenSSL tpm2tss доступным, я был бы очень признателен. Спасибо.
Небольшое обновление. Мне удалось заставить работать старую версию OpenSSL 1.1.1 libengine-tpm2… на Ubuntu 22.04. Это устанавливалось в папку engines-1.1. Это потребовало понижения версии установленного OpenSSL3 и нахождения более старых зависимостей.
Но мне не удалось заставить работать новую версию OpenSSL3 на 22.04. И я также не смог выполнить операции TPM, которые я пытался сделать.
Ответ или решение
Для того чтобы установить и настроить OpenSSL Engine tpm2tss на Ubuntu 22.04, необходимо выполнить несколько шагов, включая установку необходимых зависимостей, сборку tpm2tss и его интеграцию с OpenSSL 3.
Шаг 1: Установка зависимостей
Сначала нужно установить основные зависимости, которые потребуются для сборки и использования tpm2tss и OpenSSL. Откройте терминал и выполните следующие команды:
sudo apt update
sudo apt install -y build-essential git cmake pkg-config \
libssl-dev libtool libglib2.0-dev \
libtss2-dev
Шаг 2: Клонирование репозитория tpm2-tss
Далее нужно клонировать репозиторий tpm2-tss:
git clone https://github.com/TPM2.0-TSS/TSS.MSR.git
cd TSS.MSR
Шаг 3: Сборка и установка tpm2-tss
Соберите и установите tpm2-tss, выполнив следующие команды:
mkdir build && cd build
cmake ..
make
sudo make install
Шаг 4: Установка tpm2-tss-engine
Теперь вам нужно будет установить tpm2-tss-engine
. Сначала клонируйте соответствующий репозиторий:
cd ~
git clone https://github.com/TPM2.0-TSS/tpm2-tss-engine.git
cd tpm2-tss-engine
Соберите и установите tpm2-tss-engine
:
mkdir build && cd build
cmake ..
make
sudo make install
Шаг 5: Конфигурация OpenSSL для использования tpm2tss
После установки tpm2-tss и tpm2-tss-engine необходимо убедиться, что OpenSSL видит тпм2tss. Откройте или создайте файл /etc/ssl/openssl.cnf
или модифицируйте существующий и добавьте следующую строчку в секцию engines
:
engine = tpm2tss
Шаг 6: Проверка установки
Проверьте, действительно ли установлен tpm2tss как движок OpenSSL:
openssl engine
Вы должны увидеть tpm2tss
в списке доступных движков.
Шаг 7: Использование в .NET 8
После того как вы установили и настроили OpenSSL с движком tpm2tss, вы сможете использовать методы внутри .NET 8, такие как SafeEvpPKeyHandle.OpenPrivateKeyFromEngine
, для взаимодействия с TPM2.
Примечание
Если у вас возникли проблемы с установкой зависимости или соответствующими библиотеками, возможно, вам придется обновить или настроить систему в соответствии с особенностями вашего окружения. Убедитесь, что у вас правильно настроены пути к библиотекам, и используйте менеджеры пакетов, которые доступны на вашем устройстве.
Если возникнут дополнительные вопросы или сложности, обращайтесь за помощью на форумах разработчиков или в чаты сообщества, посвященные TPM и OpenSSL.