0 Проверка модели устройства
- Подключите USB-токен к компьютеру.
- Для определения названия модели USB-токена откройте Терминал и введите команду:
$ lsusb
В результате в окне Терминала отобразится название модели USB-токена:
Убедитесь, что используете: Aktiv Rutoken ECP
1 Доустанавливаем необходимые пакеты с диска
Пуск - Настройки - Менеджер пакетов
через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты:
- libccid
- pcscd
- libpam-p11
- libpam-pkcs11
- libp11-2
- libengine-pkcs11-openssl
- opensc
Info |
---|
В Astra Linux SE 1.6 pkcs11 libengine-pkcs11-openssl версии 1.0.2 не совместим с библиотекой librtpkcs11ecp.so. Для корректного функционирования, следует скачать и установить подписанный пакет libengine-pkcs11-openssl1.1 версии 0.4.4-4 для Смоленска 1.6: |
2 Добавляем библиотеку librtpkcs11ecp.so
Загружаем библиотеку через браузер.
Для 64-битной системы используйте ссылку:
https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/rtpkcs11ecp/librtpkcs11ecp.so
Для 32-битной системы используйте ссылку:
https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so
или через консоль
Пуск - утилиты Утилиты - Терминал Fly
...
Для 64-битной системы используйте:
Code Block | ||
---|---|---|
| ||
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/ |
...
librtpkcs11ecp.so |
...
Для 32-битной системы используйте:
Code Block | ||
---|---|---|
| ||
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so |
...
Копируем в системную папку
{code}
$ sudo cp librtpkcs11ecp.so /usr/lib
.
Для 32- и 64-битной системы используйте:
Code Block | ||
---|---|---|
| ||
$ sudo cp librtpkcs11ecp.so /usr/lib
$ sudo chmod 644 |
...
/usr/lib/librtpkcs11ecp.so |
...
3 Проверяем что Рутокен ЭЦП работает в системе
Пуск - утилиты - Терминал Fly
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -T |
В случае если увидите вот такую строку, значит все хорошо.
Rutoken ECP <no label>
4 Считываем сертификат
Проверяем что на устройстве есть сертификат
Пуск - утилиты - Терминал Fly
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O |
Если после строчки
Using slot 0 with a present token (0x0)
...
выводится информация о ключах и сертификатах то необходимо считать сертификат
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -r -y cert |
...
--id {id} > cert.crt |
вместо {id} нужно подставить ID который вы увидите в выводе команды команды
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O |
В случае, если файл cert.crt создан переходим к пункту 5
4.1 Создаем самоподписанный сертификат
Пуск - утилиты - Терминал Fly
генерируем ключевую пару
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool -- |
...
module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type |
...
rsa:2048 -l --id |
...
45 |
создаем самоподписанный сертификат
Code Block | ||
---|---|---|
| ||
$ openssl |
...
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/ |
...
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 |
загружаем сертификат на устройство
Code Block | ||
---|---|---|
| ||
$ pkcs11-tool -- |
...
module /usr/lib/librtpkcs11ecp.so -l -y cert -w cert.crt --id |
...
45 |
5 Регистрируем сертификат в системе
Пуск - утилиты - Терминал Fly
Конвертируем сертификат в текстовый формат
Code Block | ||
---|---|---|
| ||
OpenSSL> x509 -in |
...
cert.crt -out cert.pem -inform DER -outform PEM |
...
Code Block | ||
---|---|---|
| ||
$ mkdir ~/.eid |
...
$ chmod 0755 ~/.eid |
...
$ cat |
...
cert.pem >> ~/.eid/authorized_certificates |
...
$ chmod 0644 ~/.eid/authorized_certificates |
6 Настраиваем аутентификацию
Пуск - утилиты - Терминал Fly
Code Block | ||
---|---|---|
| ||
$ sudo nano /usr/share/pam-configs/p11 |
записываем в файл следующую информацию
Code Block | ||
---|---|---|
| ||
Name: Pam_p11 |
...
Default: |
...
yes Priority: 800 |
...
Auth-Type: Primary |
...
Auth: sufficient pam_p11_opensc.so |
...
/usr/lib/librtpkcs11ecp.so |
...
Code Block | ||
---|---|---|
| ||
$ sudo pam-auth-update |
в
...
появившемся
...
окне
...
ставим
...
галку
...
в
...
Pam_p11
...
и
...
нажимаем
...
OK
7 Проверка
Пуск - утилиты - Терминал Fly
Code Block | ||
---|---|---|
| ||
$ sudo login |
...
введите имя пользователя и в случае если система потребует PIN-код от устройства значит все настроено правильно
8 Блокировка компьютера при извлечении токена
В состав пакета libpam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11.
Для настройки pkcs11_eventmgr служит файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf
Пример файла конфигурации представлен ниже:
Code Block | ||
---|---|---|
| ||
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 в автозагрузку и перезагрузитесь.