0 Проверка модели устройства
- Подключите USB-токен к компьютеру.
- Для определения названия модели USB-токена откройте Терминал и введите команду:
$ lsusb
В результате в окне Терминала отобразится название модели USB-токена:
Убедитесь, что используете: Aktiv Rutoken ECP
1 Доустанавливаем необходимые пакеты с диска
Пуск - Настройки - Менеджер пакетов
через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты:
- libccid
- pcscd
- libpam-p11
- libpam-pkcs11
- libp11-2
- libengine-pkcs11-openssl
- opensc
В 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/librtpkcs11ecp.so
Для 32-битной системы используйте ссылку:
https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so
или через консоль
Пуск - Утилиты - Терминал Fly
Для 64-битной системы используйте:
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/librtpkcs11ecp.so
Для 32-битной системы используйте:
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x32/librtpkcs11ecp.so
Копируем в системную папку.
Для 32- и 64-битной системы используйте:
$ 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/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
загружаем сертификат на устройство
$ 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
$ 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 в автозагрузку и перезагрузитесь.