Page tree
Skip to end of metadata
Go to start of metadata

0 Проверка модели устройства

  1. Подключите USB-токен к компьютеру.
  2. Для определения названия модели USB-токена откройте Терминал и введите команду:
$ lsusb 

В результате в окне Терминала отобразится название модели USB-токена:

Убедитесь, что используете: Aktiv Rutoken ECP

1 Доустанавливаем необходимые пакеты с диска

Пуск - Настройки - Менеджер пакетов

через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты: 

  • libccid
  • pcscd
  • libpam-p11
  • libpam-pkcs11
  • libp11-2
  • libengine-pkcs11-openssl
  • opensc

2 Добавляем библиотеку librtpkcs11ecp.so

Загружаем библиотеку через браузер

https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/rtpkcs11ecp/librtpkcs11ecp.so

или через консоль

Пуск - утилиты - Терминал Fly

 $ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/rtpkcs11ecp/librtpkcs11ecp.so

Копируем в системную папку  

$ sudo cp librtpkcs11ecp.so /usr/lib
$ sudo chmod 644 /usr/lib/librtpkcs11ecp.so

3 Проверяем что Рутокен ЭЦП работает в системе

Пуск - утилиты - Терминал Fly\

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

В случае если увидите вот такую строку, значит все хорошо.

Rutoken ECP <no label> 

4 Считываем сертификат

Проверяем что на устройстве есть сертификат

Пуск - утилиты - Терминал Fly

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

Если после строчки 

Using slot 0 with a present token (0x0) 

нет ничего, значит устройство пустое. Обратитесь к администратору или создайте ключи и сертификат самостоятельно следуя пункту 4.1

Если после строчки

Using slot 0 with a present token (0x0)

выводится информация о ключах и сертификатах то необходимо считать сертификат

$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert  --id {id} > cert.crt

вместо {id} нужно подставить ID который вы увидите в выводе команды

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

В случае, если файл cert.crt создан переходим к пункту 5

4.1 Создаем самоподписанный сертификат

Пуск - утилиты - Терминал Fly

генерируем ключевую пару 

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

создаем самоподписанный сертификат

$ openssl
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1  -pre LOAD -pre MODULE_PATH:/usr/lib/librtpkcs11ecp.so
OpenSSL> req -engine pkcs11 -new -key 0:45 -keyform engine -x509 -out cert.crt -outform DER

загружаем сертификат на устройство

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

5 Регистрируем сертификат в системе

Пуск - утилиты - Терминал Fly

Конвертируем сертификат в текстовый формат

OpenSSL> x509 -in cert.crt -out cert.pem -inform DER -outform PEM
Добавляем сертификат в список доверенных сертификатов


$ mkdir ~/.eid
$ chmod 0755 ~/.eid
$ cat cert.pem >> ~/.eid/authorized_certificates
$ chmod 0644 ~/.eid/authorized_certificates


6 Настраиваем аутентификацию 

Пуск - утилиты - Терминал Fly

$ sudo nano /usr/share/pam-configs/p11

записываем в файл следующую информацию

Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11_opensc.so /usr/lib/librtpkcs11ecp.so
сохраняем файл, нажимаем Alt + X, а затем Y
после этого выполняем


$ sudo pam-auth-update


в появившемся окне ставим галку в Pam_p11 и нажимаем OK

7 Проверка

Пуск - утилиты - Терминал Fly

$ sudo login 

введите имя пользователя и в случае если система потребует PIN-код от устройства значит все настроено правильно

8 Блокировка компьютера при извлечении токена

В состав пакета libpam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11.

Для настройки pkcs11_eventmgr служит файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf

Пример файла конфигурации представлен ниже:

pkcs11_eventmgr
{
	# Запуск в бэкграунде
    daemon = true;
	
	# Настройка сообщений отладки
	debug = false;

	# Время опроса в секундах
	polling_time = 1;

	# Установка тайм-аута на удаление карты
	# По-умолчанию 0
	expire_time = 0;

	# Выбор pkcs11 библиотеки для работы с Рутокен
	pkcs11_module = /usr/lib/librtpkcs11ecp.so;

	# Действия с картой
	# Карта вставлена:
	event card_insert {
		# Оставляем значения по умолчанию (ничего не происходит)
		on_error = ignore ;

		action = "/bin/false";
	}

	# Карта извлечена
	event card_remove { 
		on_error = ignore;
		
		# Вызываем функцию блокировки экрана
		action = "fly-wmfunc FLYWM_LOCK";
	}

	# Карта долгое время извлечена
	event expire_time { 
		# Оставляем значения по умолчанию (ничего не происходит)
		on_error = ignore;

		action = "/bin/false";
	}
}

После этого добавьте приложение pkcs11_eventmgr в автозагрузку и перезагрузитесь.


  • No labels