В данной инструкции описывается, как настроить модуль pam_pkcs11
для работы с библиотекой librtpkcs11ecp.so
.
Нам понадобится токен или смарт-карта семейства Рутокен ЭЦП, отформатированные через Утилита администрирования Рутокен (rtadmin).
Настройки для токена и смарт-карты идентичны.
$ lsusb
В результате в окне Терминала отобразится название модели USB-токена:
Убедитесь, что используете: Aktiv Rutoken ECP
Если вы используете смарт-карту Рутокен, то проверку проходить не требуется.
Для этого вы можете воспользоваться Терминалом:
|
Или из меню запустить Приложения - Системные - Программа управления пакетами Synaptic и используя быстрый поиск выбрать для установки пакеты:
Если установка завершилась корректно, то в папке /usr/lib (или /usr/lib64) появится библиотека librtpkcs11ecp.so.
Подключаем токен или смарт-карту к компьютеру. Запускаем dmesg и убедимся в том, что устройство определилось корректно.
Для 32-битной версии используйте команду:
|
Для 64-битной версии используйте команду:
|
Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации.
Рекомендуемая длина ключа RSA - не ниже 2048 бит.
Действуйте по основной инструкции, пропустив шаги 4-8.
Внимание! При выполнении команды запрашивается PIN-код пользователя. Генерация ключевой пары может занять некоторое время.
Для 32-битной версии используйте команду:
|
Для 64-битной версии используйте команду:
|
Утилита pkcs11-tool
входит в состав opensc
.
Параметры, задаваемые в этой строке:
--module <arg> | путь к библиотеке pkcs11 (обязательный параметр) |
| генерация ключевой пары |
-- key-type <arg> | задает тип и длину ключа. В нашем случае тип – rsa, длина - 2048 бит (с длиной ключа 1024 бит возникают проблемы) |
-l | запрос PIN-кода токена до каких-либо операций с ним (обязательный параметр) |
--id <arg> | определяет id создаваемого объекта (понадобится при создании сертификата) |
Запускаем openssl
и подгружаем модуль поддержки pkcs11:
Для 32-битной версии используйте команду:
|
Для 64-битной версии используйте команду:
|
Создаем сертификат в PEM-формате. Внимание! При выполнении этой команды запрашивается PIN-код пользователя.
|
Здесь:
-key | указывает закрытый ключ (в нашем случае 0:45 – слот:ID ключа) |
| выдает самоподписанный сертификат |
|
Закрываем openssl (используя команду exit).
Cохраняем сертификат CRT на Рутокен. Внимание! При выполнении этой команды запрашивается PIN-код пользователя.
Для 32-битной версии используйте команду:
|
Для 64-битной версии используйте команду:
|
Здесь:
-y <arg> | тип объекта (может быть cert, privkey, pubkey, data) |
| записать объект на токен |
Внимание! При выполнении команды запрашивается PIN-код пользователя.
Для 32-битной версии используйте команду:
|
Для 64-битной версии используйте команду:
|
Включение аутентификации по внешнему носителю
Потребуются права суперпользователя:
|
на вопрос об удалении ссылки следует ответить "y"
Отредактируем первую строку файла конфигурации /etc/pam.d/system-auth.
Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
Для редактирования можно воспользоваться редактором pluma
|
Для 32-битной версии используйте строку:
|
Для 64-битной версии используйте строку:
|
Отредактируем файл /etc/security/pam_pkcs11/pam_pkcs11.conf
Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
Для редактирования можно воспользоваться редактором pluma
|
Для 32-битной версии используйте:
|
Для 64-битной версии замените строку
module = /usr/lib/librtpkcs11ecp.so на строку module = /usr/lib64/librtpkcs11ecp.so
и строку
mapper_search_path = /lib/pam_pkcs11; на строку mapper_search_path = /lib64/pam_pkcs11;
Добавляем сертификат в список доверенных сертификатов
|
Проверьте, что настройка была выполнена верно, используя команду login. Не завершайте свою сессию, пока не убедитесь в том, что все работает корректно.
Если команда login выполняется успешно, то вы можете завершать свою сессию и использовать аутентификацию по токенам и смарт-картам Rutoken.
В случае возникновения ошибок еще раз проверьте все настройки. Для выявления проблемы вы так же можете включить вывод дополнительной информации при аутентификации.
Для этого:
Не забудьте отключить вывод дополнительной информации после настройки системы.
На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так:
При необходимости добавить вход по токену для других пользователей следует:
1) Настроить другие токены аналогичным образом. Это рекомендуемый способ, так как политика "один токен - один пользователь", является предпочтительной.
2) Выписать другую пару ключей и сертификат на тот же токен. (иногда бывает удобно для периодической работы из под суперпользователя)
В обоих случаях в файле subject_mapping должно оказаться две (или несколько) записей.