- Created by Техническая поддержка Рутокен, last modified by Мещеряков Кирилл on Aug 31, 2016
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 23 Next »
Введение
В данной инструкции описывается, как настроить модуль pam_pkcs11
для работы с библиотекой librtpkcs11ecp.so
.
Стенд
Нам понадобится токен или смарт-карта Рутокен ЭЦП, отформатированные через Панель управления Рутокен.
Настройки для токена и смарт-карты идентичны.
Общий порядок действий
1 Устанавливаем необходимые пакеты и их зависимости:
Для этого вы можете воспользоваться Терминалом:
$ sudo apt-get install opensc pam_pkcs11 pcsc-lite-ccid openssl-engine_pkcs11
Или из меню запустить Приложения - Системные - Программа управления пакетами Synaptic и используя быстрый поиск выбрать для установки пакеты:
- opensc,
- pam_pkcs11,
- pcsc-lite-ccid,
- openssl-engine_pkcs11.
2 Скачиваем и устанавливаем пакет для вашей системы
- Библиотека rtPKCS11ecp для GNU/Linux RPM 32-bit (x86)
- Библиотека rtPKCS11ecp для GNU/Linux RPM 64-bit (x86_64)
Если установка завершилась корректно, то в папке /usr/lib (или /usr/lib64) появится библиотека librtpkcs11ecp.so.
3 Проверяем работу токена или смарт-карты
Подключаем токен или смарт-карту к компьютеру. Запускаем dmesg и убедимся в том, что устройство опредилось корректно.
Для 32-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
Для 64-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T
4 Создаем ключевой пары
Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации.
Рекомендуемая длина ключа RSA - не ниже 2048 бит.
Действуйте по основной инструкции, пропустив шаги 4-8.
Внимание! При выполнении команды запрашивается PIN-код пользователя. Генерация ключевой пары может занять некоторое время.
Для 32-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45
Для 64-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45
Утилита pkcs11-tool
входит в состав opensc
.
Параметры, задаваемые в этой строке:
--module <arg> | путь к библиотеке pkcs11 (обязательный параметр) |
| генерация ключевой пары |
-- key-type <arg> | задает тип и длину ключа. В нашем случае тип – rsa, длина - 2048 бит (с длиной ключа 1024 бит возникают проблемы) |
-l | запрос PIN-кода токена до каких-либо операций с ним (обязательный параметр) |
--id <arg> | определяет id создаваемого объекта (понадобится при создании сертификата) |
5 Создаем сертификат в формате PEM
Запускаем openssl
и подгружаем модуль поддержки pkcs11:
Для 32-битной версии используйте команду:
$ openssl OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib/librtpkcs11ecp.so
Для 64-битной версии используйте команду:
$ openssl OpenSSL> engine dynamic -pre SO_PATH:/usr/lib64/openssl/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/librtpkcs11ecp.so
Создаем сертификат в PEM-формате. Внимание! При выполнении этой команды запрашивается PIN-код пользователя.
OpenSSL> req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.pem -text
Здесь:
-key | указывает закрытый ключ (в нашем случае 0:45 – слот:ID ключа) |
| выдает самоподписанный сертификат |
6 Конвертируем сертификат из формата PEM в формат CRT
OpenSSL> x509 -in cert.pem -out cert.crt -outform DER
7 Сохраняем сертификат на аутентифицирующий носитель
Закрываем openssl (используя команду exit).
Cохраняем сертификат CRT на Рутокен. Внимание! При выполнении этой команды запрашивается PIN-код пользователя.
Для 32-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45
Для 64-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45
Здесь:
-y <arg> | тип объекта (может быть cert, privkey, pubkey, data) |
| записать объект на токен |
8 Проверяем, что на токене есть всё, что необходимо
Внимание! При выполнении команды запрашивается PIN-код пользователя.
Для 32-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O -l
Для 64-битной версии используйте команду:
$ pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -O -l
9 Создаем файлы конфигурации pam_pkcs11
Воспольуемся примерами, которые предоставляют разработчики pam_pkcs11.
Потребуются права суперпользователя:
$ su Password: #
Для ALT Lixnux верси 6.0 и 7.0 используйте команду:
# cp /usr/share/pam_pkcs11/pam_pkcs11.conf.example /etc/security/pam_pkcs11/pam_pkcs11.conf # cp /usr/share/pam_pkcs11/subject_mapping.example /etc/security/pam_pkcs11/subject_mapping
Для ALT Lixnux верси 8 используйте команду:
# cp /usr/share/doc/pam_pkcs11/pam_pkcs11.conf.example /etc/security/pam_pkcs11/pam_pkcs11.conf # cp /usr/share/doc/pam_pkcs11/subject_mapping.example /etc/security/pam_pkcs11/subject_mapping
на вопрос о переписывании файла следует ответить "y"
10 Включаем аутентификацию по внешнему носителю
# rm /etc/pam.d/system-auth # ln -s /etc/pam.d/system-auth-pkcs11 /etc/pam.d/system-auth
на вопрос об удалении ссылки следует ответить "y"
11 Редактируем конфигурацию аутентификации в системе
Отредактируем вторую строчку файла конфигурации /etc/pam.d/system-auth.
Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
Для редактирования можно воспользоваться редактором mcedit
# mcedit /etc/pam.d/system-auth
Для 32-битной версии используйте строку:
auth [success=1 default=ignore] pam_pkcs11.so pkcs11_module=/usr/lib/librtpkcs11ecp.so
Для 64-битной версии используйте строку:
auth [success=1 default=ignore] pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so
12 Редактируем конфигурацию pam_pkcs11
Отредактируем файл /etc/security/pam_pkcs11/pam_pkcs11.conf
Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
Для редактирования можно воспользоваться редактором mcedit
# mcedit /etc/security/pam_pkcs11/pam_pkcs11.conf
Для 32-битной версии используйте:
pam_pkcs11 { nullok = false; debug = false; use_first_pass = false; use_authtok = false; card_only = false; wait_for_card = false; use_pkcs11_module = rutokenecp; # Aktiv Rutoken ECP pkcs11_module rutokenecp { module = /usr/lib/librtpkcs11ecp.so slot_num = 0; support_thread = true; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = signature; } use_mappers = subject; mapper_search_path = /lib/pam_pkcs11; mapper subject { debug = false; module = internal; ignorecase = false; mapfile = file:///etc/security/pam_pkcs11/subject_mapping; } }
Для 64-битной версии замените строку
module = /usr/lib/librtpkcs11ecp.so на строку module = /usr/lib64/librtpkcs11ecp.so
и строку
mapper_search_path = /lib/pam_pkcs11; на строку mapper_search_path = /lib64/pam_pkcs11;
13 Добавляем связку сертификата на токене с пользователем системы ALT Linux.
Для этого выполняем команду pkcs11_inspect
# pkcs11_inspect > /etc/security/pam_pkcs11/subject_mapping
Используя текстовый редактор закомментируем или удаляем ненужные строчки
Для этого можно использовать редактор mcedit
# mcedit /etc/security/pam_pkcs11/subject_mapping
# Printing data for mapper subject: /C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=Aktiv/CN=alt/emailAddress=alt@mail.ru -> alt
Внимание! Вместо alt нужно установить имя пользователя в вашей системе
Если вы не знаете имя пользователя запустите команду whoami (без прав суперпользователя)
$ whoami
14 Проверям выполненные настройки
Проверьте, что настройка была выполнена верно, используя команду login. Не завершайте свою сессию, пока не убедитесь в том, что все работает корректно.
Если команда login выполняется успешно, то вы можете завершать свою сессию и использовать аутентификацию по токенам и смарт-картам Rutoken.
В случае возникновения ошибок еще раз проверьте все настройки. Для выявления проблемы вы так же можете включить вывод дополнительной информации при аутетификации.
Для этого:
- В файле pam_pkcs11.conf исправьте все строки вида "debug = false;", на строки "debug = true;".
- В конец второй строки файла конфигурации /etc/pam.d/system-auth добавьте слово "debug".
Не забудьте отключить вывод дополнительной инфомации после настройки системы.
15 Настройка звершена!
На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так:
16 Другие пользователи
При необходимости добавить вход по токену для других пользователей следует:
1) Настроить другие токены аналогичным образом. Это рекомендуемый способ, так как политика "один токен - один пользователь", является предпочтительной.
2) Выписать другую пару ключей и сертификат на тот же токен. (иногда бывает удобно для периодической работы из под суперпользователя)
В обоих случаях в файле subject_mapping должно оказаться две (или несколько) записей
- No labels