Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Нам понадобится Rutoken ECP, отформатированный через Панель управления Рутокен. В качестве дистрибутива использовалась ALT Linux 6.0.2.

Общий порядок действий

1. Устанавливаем необходимые пакеты и необходимые для них зависимости:

 $ sudo apt-get install opensc pam_pkcs11 pcsc-lite-ccid openssl-engine_pkcs11

2. Скачиваем и устанавливаем пакет Библиотека rtPKCS11ecp для GNU/Linux RPM 32-bit (x86)

3. Подключаем токен к компьютеру. Запускаем dmesg и убедимся в том, что токен опредился корректно.

4. Переходим к созданию ключевой пары:

Выполняем команду. Внимание! При выполнении этой команды запрашивается PIN-код пользователя. Генерация ключевой пары может занять некоторое время.

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45

Утилита pkcs11-tool входит в состав opensc.

Параметры, задаваемые в этой строке:

--module <arg>путь к библиотеке pkcs11 (обязательный параметр)
--keypairgen
генерация ключевой пары
-- key-type <arg>задает тип и длину ключа. В нашем случае тип – rsa, длина - 2048 бит (с длиной ключа 1024 бит возникают проблемы)
-l запрос PIN-кода токена до каких-либо операций с ним (обязательный параметр)
--id <arg>

определяет id создаваемого объекта (понадобится при создании сертификата)

5. Переходим к созданию сертификата. 

Запускаем 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

6. Создаем сертификат в PEM-формате. Внимание! При выполнении этой команды запрашивается PIN-код пользователя.

 OpenSSL>  req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.pem  -text

Здесь:

-key указывает закрытый ключ (в нашем случае 0:45 – слот:ID ключа)
-x509 
выдает самоподписанный сертификат

7. Конвертируем сертификат PEM в CRT:

OpenSSL> x509 -in cert.pem -out cert.crt -outform DER

8. Закрываем openssl (используя команду exit). Теперь сохраняем сертификат CRT на Рутокен. Внимание! При выполнении этой команды запрашивается PIN-код пользователя. :

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45

Здесь:

-y <arg>тип объекта (может быть cert, privkey, pubkey, data)
-w <arg>
записать объект на токен

9. Проверим, что на токене есть всё, что необходимо.

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O

10. Создаем файлы конфигурации 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

11.  Включаем аутентификацию по токену.

$ rm /etc/pam.d/system-auth
$ ln -s /etc/pam.d/system-auth-pkcs11 /etc/pam.d/system-auth

12. Редактируем файл конфигурации /etc/pam.d/system-auth. Внимание, приведенная ниже конфигурация является примером, а не эталоном настройки системы.

 

12. Редактируем 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. На этом настройка закончена. После перезапуска ОС окно входа в систему будет выглядеть так:

Приложение: настройка аутентификации с имеющимся сертификатом

Если у вас уже имеется выписанная на токен ключевая пара RSA с привязанным к ней сертификатом, то вы можете использовать их для аутентификации в Ubuntu.

Рекомендуемая длина ключа RSA - не ниже 2048 бит.

  1. Выполните перезагрузку.

 

  • No labels