Как заставить OpenSSL на Ubuntu 22.04 использовать TPM2?

Вопрос или проблема

Я использую 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.

  1. Откройте файл конфигурации OpenSSL, который обычно можно найти по пути /etc/ssl/openssl.cnf.
  2. Добавьте следующий блок в конец файла:
[ 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 или сообществу поддержки.

Оцените материал
Добавить комментарий

Капча загружается...