- Created by Техническая поддержка Рутокен, last modified by Мещеряков Кирилл on Aug 12, 2016
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 6 Next »
Введение
В данной инструкции описывается, как настроить модуль pam_pkcs11
для работы с библиотекой librtpkcs11ecp.so
.
Стенд
В качестве дистрибутива использовалась ALT Linux 6.0.2.
Нам понадобится токен Rutoken ECP или смарт-карта Rutoken ECP SC, отформатированные через Панель управления Рутокен.
Настройки для токена и смарт-карты идентичны. Для примера нами был использован Rutoken ECP.
Общий порядок действий
1 Устанавливаем необходимые пакеты и их зависимости:
Для этого вы можете воспользоваться Терминалом:
$ sudo apt-get install opensc pam_pkcs11 pcsc-lite-ccid openssl-engine_pkcs11
Или из меню GNOME запустить Приложения - Системные - Программа управления пакетами 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 появится библиотека librtpkcs11ecp.so
3 Проверяем работу токена или смарт-карты
Подключаем токен или смарт-карту к компьютеру. Запускаем dmesg и убедимся в том, что устройство опредилось корректно.
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T
4 Создаем ключевой пары
Внимание! При выполнении команды запрашивается PIN-код пользователя. Генерация ключевой пары может занять некоторое время.
$ pkcs11-tool --module /usr/lib/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:
$ 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
Создаем сертификат в 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-код пользователя. :
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45
Здесь:
-y <arg> | тип объекта (может быть cert, privkey, pubkey, data) |
| записать объект на токен |
8 Проверяем, что на токене есть всё, что необходимо
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O
9 Создаем файлы конфигурации pam_pkcs11
Воспольуемся примерами, которые предоставляют разработчики pam_pkcs11.
$ 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
10 Включаем аутентификацию по токену
$ rm /etc/pam.d/system-auth $ ln -s /etc/pam.d/system-auth-pkcs11 /etc/pam.d/system-auth
11 Редактируем конфигурацию аутентификации в системе
Отредактируем вторую строчку файла конфигурации /etc/pam.d/system-auth. Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
auth [success=1 default=ignore] pam_pkcs11.so pkcs11_module=/usr/lib/librtpkcs11ecp.so
12 Редактируем конфигурацию pam_pkcs11
Отредактируем файл /etc/security/pam_pkcs11/pam_pkcs11.conf. Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
pam_pkcs11 { nullok = false; debug = false; use_first_pass = false; use_authtok = false; card_only = false; wait_for_card = false; use_pkcs11_module = rutoken; # Aktiv RutokenECP pkcs11_module rutoken { module = /usr/lib/librtpkcs11ecp.sp 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; } }
13 Добавляем связку сертификата на токене с пользователем системы ALT Linux.
Для этого выполняем команду.
$ pkcs11_inspect
Используя вывод команды pkcs11_inspect, создадим запись в файле /etc/security/pam_pkcs11/subject_mapping.
# Mapping file for Certificate Subject # format: Certificate Subject -> login # /C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=Aktiv/CN=alt/emailAddress=alt@mail.ru -> alt
14 Проверям выполненные настройки
Проверьте, что настройка была выполнена верно, используя команду login. Не завершайте свою сессию, пока не убедитесь в том, что все работает корректно.
Если команда login выполняется успешно, то вы можете завершать свою сессию и использовать аутентификацию по токенам и смарт-картам Rutoken.
В случае возникновения ошибок еще раз проверьте все настройки. Для выявления проблемы вы так же можете включить вывод дополнительной информации при аутетификации.
Для этого:
- В файле pam_pkcs11.conf исправьте все строки вида "debug = false;", на строки "debug = true;".
- В конец второй строки файла конфигурации /etc/pam.d/system-auth добавьте слово "debug".
Не забудьте отключить вывод дополнительной инфомации после настройки системы.
15 Настройка звершена!
На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так:
Приложение: настройка аутентификации с имеющимся сертификатом
Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации.
Рекомендуемая длина ключа RSA - не ниже 2048 бит.
Действуйте по основной инструкции, пропустив шаги 4-8.
- No labels