Введение
В данной инструкции описывается, как заставить настроить модуль pam_pkcs11
работать для работы с библиотекой librtpkcs11ecp.so
.
Стенд
В качестве дистрибутива использовалась ALT Linux 6.0.2.
Нам понадобится токен Rutoken ECP , отформатированный или смарт-карта Rutoken ECP SC, отформатированные через Панель управления Рутокен. В качестве дистрибутива использовалась ALT Linux 6.0.2
Настройки для токена и смарт-карты идентичны. Для примера нами был использован Rutoken ECP.
Общий порядок действий
1
...
Устанавливаем необходимые пакеты и
...
их зависимости:
Для этого вы можете воспользоваться Терминалом:
Code Block | ||
---|---|---|
| ||
$ 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 Проверяем работу токена или смарт-карты
Подключаем токен или смарт-карту 3. Подключаем токен к компьютеру. Запускаем dmesg и убедимся в том, что токен опредился устройство опредилось корректно.
4
...
Создаем ключевой пары
...
Выполняем команду. Внимание! При выполнении этой команды запрашивается PIN-код пользователя. Генерация ключевой пары может занять некоторое время.
...
--module <arg> | путь к библиотеке pkcs11 (обязательный параметр) |
| генерация ключевой пары |
-- key-type <arg> | задает тип и длину ключа. В нашем случае тип – rsa, длина - 2048 бит (с длиной ключа 1024 бит возникают проблемы) |
-l | запрос PIN-кода токена до каких-либо операций с ним (обязательный параметр) |
--id <arg> | определяет id создаваемого объекта (понадобится при создании сертификата) |
5
...
Создаем сертификат в формате PEM
Запускаем openssl
и подгружаем модуль поддержки pkcs11:
Code Block | ||
---|---|---|
| ||
$ 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 |
6. Создаем сертификат в PEM-формате. Внимание! При выполнении этой команды запрашивается PIN-код пользователя.
...
-key | указывает закрытый ключ (в нашем случае 0:45 – слот:ID ключа) |
| выдает самоподписанный сертификат |
...
6 Конвертируем сертификат из формата PEM в формат CRT
...
Code Block | ||
---|---|---|
| ||
OpenSSL> x509 -in cert.pem -out cert.crt -outform DER |
7 Сохраняем сертификат на аутентифицирующий носитель
8. Закрываем openssl (используя команду exit).
Теперь сохраняем Cохраняем сертификат CRT на Рутокен. Внимание! При выполнении этой команды запрашивается PIN-код пользователя. :
...
-y <arg> | тип объекта (может быть cert, privkey, pubkey, data) |
| записать объект на токен |
...
8 Проверяем, что на токене есть всё, что необходимо
...
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O |
...
9 Создаем файлы конфигурации pam_pkcs11
Воспольуемся примерами, которые предоставляют разработчики pam_pkcs11 используя примеры.
Code Block | ||
---|---|---|
| ||
$ 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 Включаем аутентификацию по токену
...
Code Block | ||
---|---|---|
| ||
$ rm /etc/pam.d/system-auth $ ln -s /etc/pam.d/system-auth-pkcs11 /etc/pam.d/system-auth |
11 Редактируем конфигурацию аутентификации в системе
12. Отредактируем вторую строчку файла конфигурации /etc/pam.d/system-auth. Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
Code Block | ||
---|---|---|
| ||
auth [success=1 default=ignore] pam_pkcs11.so pkcs11_module=/usr/lib/librtpkcs11ecp.so |
12 Редактируем конфигурацию pam_pkcs11
Отредактируем файл /etc/security/13. Редактируем pam_pkcs11/pam_pkcs11.conf. Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.
Code Block | ||
---|---|---|
| ||
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.
Для этого выполняем команду.
...
Code Block | ||
---|---|---|
| ||
# 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 Проверям выполненные настройки
15. Проверьте, что настройка была выполнена верно, используя команду login. Не завершайте свою сессию, пока не убедитесь в том, что все работает корректно.
...
Не забудьте отключить вывод дополнительной инфомации после настройки системы.
15 Настройка звершена!
16. На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так:
Приложение: настройка аутентификации с имеющимся сертификатом
Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации в Ubuntu.
Рекомендуемая длина ключа RSA - не ниже 2048 бит.
...