Введение
В данной инструкции описывается, как настроить модуль pam_pkcs11 для работы с библиотекой librtpkcs11ecp.so.
Стенд
Нам понадобится токен или смарт-карта семейства Рутокен ЭЦП, отформатированные через Утилита администрирования Рутокен (rtadmin).
Настройки для токена и смарт-карты идентичны.
Общий порядок действий
Шаг 1: Установка необходимых пакетов
Переходим в режим суперпользователя и обновляем список пакетов, затем устанавливаем необходимые компоненты для работы с Рутокен:
su - apt-get update apt-get install librtpkcs11ecp libp11 pam_pkcs11 opensc openssl
Проверка установки библиотеки Рутокен:
ls -la /usr/lib64/librtpkcs11ecp.so
✅ Если файл существует — библиотека установлена успешно
❌ Если файл не найден — установка не удалась, проверьте наличие пакета в репозитории
Шаг 2: Проверка и создание пользователя
Проверяем существование пользователя user и создаём его при необходимости. Этот шаг критически важен, так как все последующие настройки (права доступа, сертификаты, аутентификация) будут применяться именно к этому пользователю:
id user 2>/dev/null || useradd -m user
Установите временный пароль для резервного входа:
echo "user:TempPass123" | chpasswd 2>/dev/null || true
⚠️ Примечание: временный пароль "TempPass123" используется только для резервного входа. После настройки аутентификации через токен рекомендуется сменить пароль.
Проверьте результат:
id user
Шаг 3: Проверка подключения токена
Проверяем, что токен Рутокен ЭЦП корректно определился системой и доступен для работы:
lsusb | grep -i "Aktiv\|Rutoken"
Проверяем доступность токена через библиотеку PKCS#11:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --list-slots
✅ Если устройство отображается — токен физически подключён и определён системой
❌ Если вывод пустой — проверьте подключение токена к порту USB
Шаг 4: Создание ключевой пары на токене
Генерируем на токене новую криптографическую пару ключей (приватный + публичный) с использованием алгоритма RSA длиной 2048 бит. Приватный ключ никогда не покидает токен — это обеспечивает безопасность аутентификации:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --login --pin 12345678 --keypairgen --key-type rsa:2048 --id 45 --label "user"
Что делают параметры команды:
- --module /usr/lib64/librtpkcs11ecp.so — указывает путь к библиотеке Рутокен для работы с токеном
- --login — выполняет вход на токен (требуется для операций с ключами)
- --pin 12345678 — передаёт PIN-код пользователя для аутентификации на токене (используется стандартный заводской PIN)
- --keypairgen — команда генерации ключевой пары
- --key-type rsa:2048 — указывает тип ключа (RSA) и длину в битах (2048)
- --id 45 — задаёт уникальный идентификатор ключа (в шестнадцатеричном формате: 0x45)
- --label "user" — присваивает ключу понятную метку для идентификации
⚠️Важно: Идентификатор --id 45 будет использоваться позже для связи сертификата с этим ключом. Он должен совпадать при записи сертификата на токен.
Смена PIN-кода (рекомендуется):
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --login --pin 12345678 --change-pin --new-pin 123456789
Проверка успешной смены PIN:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --login --pin 123456789 --list-slots
⚠️ Если команда выше запрашивает старый PIN — смена не удалась. Повторите смену PIN.
Шаг 5: Создание конфигурации OpenSSL
В OpenSSL 3.x изменилась архитектура движков. Для работы с PKCS#11 теперь обязательно требуется конфигурационный файл, даже при использовании переменной окружения OPENSSL_CONF. Этот файл настраивает взаимодействие OpenSSL с библиотекой Рутокен.
Проверяем существование движка PKCS#11 для OpenSSL 3.x: