Вопрос или проблема
Я использую Ubuntu 22.04, и на моем компьютере установлен TPMv2. Я хочу использовать TPM для хранения секретов (таких как закрытые ключи веб-сервера) или, по крайней мере, использовать его в качестве генератора случайных чисел.
У меня установлены следующие пакеты:
tpm-udev tpm2-openssl tpm2-tools tpm-udev
Инструменты tpm2, похоже, могут общаться с чипом TPM:
$ tpm2 getrandom -T device:/dev/tpmrm0 8 | hexdump
0000000 2bda a07c d91c da8f
Однако OpenSSL v3.0.2 не распознает движок TPM:
(rdrand) Intel RDRAND engine
(dynamic) Поддержка динамической загрузки движков
Так что вопрос следующий: как мне сделать так, чтобы OpenSSL распознавал TPM2 и использовал его в качестве движка?
Ответ или решение
Чтобы сделать OpenSSL на Ubuntu 22.04 совместимым с вашим TPMv2, необходимо выполнить несколько шагов. Важно понимать, что интеграция TPM2 с OpenSSL требует конфигурации и возможного перекомпиляции OpenSSL с поддержкой TPM. В этом ответе мы подробно рассмотрим необходимые действия, чтобы обеспечить взаимодействие OpenSSL с TPM2.
Шаг 1: Установка зависимостей и необходимых пакетов
Первым делом убедитесь, что у вас установлены необходимые инструменты и библиотеки. Вам потребуется:
sudo apt update
sudo apt install build-essential git cmake pkg-config libssl-dev
Также убедитесь, что у вас установлены библиотеки для работы с TPM2:
sudo apt install tpm2-openssl tpm2-tools tpm-udev
Шаг 2: Получение и установка TPM2-Engine
TPM2-Engine предоставляет интерфейс для работы с TPM посредством OpenSSL. Чтобы установить TPM2-Engine, выполните следующие команды:
git clone https://github.com/tpm2-software/tpm2-openssl.git
cd tpm2-openssl
mkdir build && cd build
cmake .. -DOPENSSL_ROOT_DIR=/usr/lib/ssl -DCMAKE_INSTALL_PREFIX=/usr/local
make
sudo make install
Шаг 3: Настройка OpenSSL
После установки TPM2-Engine вам необходимо выполнить настройку OpenSSL, чтобы он распознавал TPM-движок. Вы можете сделать это, добавив конфигурацию в файл OpenSSL.
- Откройте файл конфигурации OpenSSL, который обычно можно найти по пути
/etc/ssl/openssl.cnf
. - Добавьте следующий блок в конец файла:
[ engines ]
tpm2 = tpm2.so
[ tpm2 ]
engine_id = tpm2
dynamic_path = /usr/local/lib/engines-1.1/tpm2.so
cipher =
Шаг 4: Проверка установки TPM2-Engine
Теперь вы можете проверить, распознается ли движок TPM2 в OpenSSL. Для этого выполните команду:
openssl engine -t -c
Вы должны увидеть что-то подобное:
(tpm2) TPM 2.0 engine
Шаг 5: Использование TPM для генерации ключей
Теперь, когда TPM2-Engine установлен и настроен, вы можете использовать его для генерации ключей или хранения секретов. Пример команды для генерации RSA-ключа с использованием TPM:
openssl genpkey -algorithm RSA -engine tpm2 -out private_key.pem
Заключение
Внедрение TPM2 в OpenSSL на Ubuntu 22.04 позволяет улучшить безопасность хранения ваших секретов и эффективно использовать аппаратный ускоритель для генерации случайных чисел. Приведенные шаги помогут вам успешно настроить интеграцию. Если у вас возникли дополнительные проблемы или вопросы, рекомендуется обратиться к документации TPM2-Engine или сообществу поддержки.