sudo dnf update sudo dnf install ccid opensc pam_pkcs11 p11-kit nss-tools |
sudo rpm -i librtpkcs11ecp-X.X.X.X-X.x86_64.rpm |
unzip rtengine-X.X.X.zip sudo dnf install rtengine/X.X.X/Linux/x64/packages/librtengineX-X.X.X-X.x86_64.rpm |
Данный раздел можно пропустить, если у вас уже есть необходимые ключи. |
pkcs11-tool
:pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type EC:prime256v1 -l --id 3132 # Параметр id задает идентификатор ключевой пары. |
|
Чтобы узнать параметр serial токена, воспользуйтесь командой: pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T |
Запустите утилиту OpenSSL с модулем rtengine
. В команде укажите путь к файлу конфигурации, настроенном в предыдущем шаге.
Пример команды создания самоподписанного сертификата:
OPENSSL_CONF=/путь/к/файлу/engine.conf openssl req -utf8 -engine rtengine -keyform engine -key 'pkcs11:id=12' -x509 -new -out cert.crt -subj "/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=devNN/CN=testuser/emailAddress=testuser@mail.com" |
Значение |
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 3132 |
sudo mkdir /etc/pam_pkcs11/nssdb sudo chmod 777 /etc/pam_pkcs11/nssdb sudo certutil -d /etc/pam_pkcs11/nssdb -N # создание базы данных sudo modutil -dbdir /etc/pam_pkcs11/nssdb/ -add p11-kit-trust -libfile /usr/lib64/pkcs11/p11-kit-trust.so |
Добавьте сертификат в доверенные:
sudo cp cert.crt /etc/pki/ca-trust/source/anchors/ # команда вводится из директории, в которую был помещен сертификат sudo update-ca-trust force-enable sudo update-ca-trust extract # может занять некоторое время |
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 = rutokenecp; # Aktiv Rutoken ECP pkcs11_module rutokenecp { module = /usr/lib64/librtpkcs11ecp.so; slot_num = 0; support_thread = true; ca_dir = /etc/pam_pkcs11/cacerts; crl_dir = /etc/pam_pkcs11/crls; cert_policy = certificate; } use_mappers = digest; mapper_search_path = /usr/lib64/pam_pkcs11; mapper digest { debug = false; module = internal; algorithm = "sha1"; mapfile = file:///etc/pam_pkcs11/digest_mapping; } } |
/etc/pam_pkcs11/
:cd /etc/pam_pkcs11/ sudo mv pam_pkcs11.conf pam_pkcs11.conf.default #резервное копирование sudo mkdir cacerts crls sudo cp /путь/к/файлу/pam_pkcs11.conf /etc/pam_pkcs11/ |
sudo pkcs11_inspect |
В результате отобразится сообщение:
[user@redos ~]$ sudo pkcs11_inspect |
/etc/pam_pkcs11/digest_mapping
в формате <вывод команды pkcs11_inspect> -> <имя_пользователя>
. [user@redos ~]$ sudo cat /etc/pam_pkcs11/digest_mapping CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB -> user |
sudo nano /etc/pam.d/system-auth # Для входа с помощью устройства Рутокен на экране приветствия sudo nano /etc/pam.d/password-auth |
pam_unix
добавьте туда строку со следующим содержимым:auth sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so |
Убедитесь, что аутентификация настроена успешно. Для этого попробуйте аутентифицироваться в терминале или на экране приветствия. Если все настроено правильно, система попросит ввести PIN-код пользователя Рутокена.
Пример аутентификации:
|
В состав пакета pam-pkcs11
входит утилита pkcs11_eventmgr
, которая позволяет выполнять различные действия при возникновении событий PKCS#11. С ее помощью можно настроить автоматическую блокировку сессии при извлечении токена.
Чтобы настроить утилиту:
/etc/pam_pkcs11/pkcs11_eventmgr.conf
.pkcs11_eventmgr
:pkcs11_eventmgr { # Запуск в бэкграунде daemon = true; # Настройка сообщений отладки debug = false; # Время опроса в секундах polling_time = 1; # Установка тайм-аута на удаление токена # По-умолчанию 0 expire_time = 0; # Выбор pkcs11 библиотеки для работы с Рутокен pkcs11_module = /usr/lib64/librtpkcs11ecp.so; # Действия с токеном # Токен вставлен: event card_insert { # Оставляем значения по умолчанию (ничего не происходит) on_error = ignore ; action = "/bin/false"; } # Токен извлечен event card_remove { on_error = ignore; # Вызываем функцию блокировки экрана в зависимости от среды рабочего стола (Mate, KDE, Gnome) action = "mate-screensaver-command --lock"; } # Токен долгое время извлечен event expire_time { # Оставляем значения по умолчанию (ничего не происходит) on_error = ignore; action = "/bin/false"; } } |
pkcs11_eventmgr
в автозагрузку, создав файл /etc/xdg/autostart/smartcard-screensaver.desktop
со следующим содержимым:[Desktop Entry] Type=Application Name=Smart Card Screensaver Comment=Application to lock screen on smart card removal. Exec=/usr/bin/pkcs11_eventmgr daemon |