...
Загрузите модуль librtpkcs11ecp.so и установите:
sudo rpm -i librtpkcs11ecp- 2.6 .1 .0 - 1 .x86_64.rpm
|
Установка pam_pkcs11
Скачайте pam_pkcs11-X.Y.Z.tar.gz.
Далее, распакуйте архив и перейдите в распакованную папку.
tar xvzf pam_pkcs11-X.Y.Z.tar.gz
cd pam_pkcs11-X.Y.Z
|
Установите pam_pkcs11
./configure && make && sudo make install
|
Для конфигурации pam_pkcs11 перенесите из разархивированной папки и папки etc файл pam_pkcs11.conf.example в папку /etc/pam_pkcs11/pam_pkcs11.conf
...
Разархивируйте пакет и перейдите в новую папку.
tar xvzf libp11-X.Y.Z.tar.gz
cd libp11-X.Y.Z
|
Для установки, введите следующую команду:
./configure && make && sudo make install
|
Вы можете пропустить данный раздел, если у вас уже имеются необходимые ключи.
Если ключей нет, ниже команда для их созданию:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45
|
Параметр id задает идентификатор ключевой пары.
...
Если pam_pkcs11.so находится в /usr/lib/local/security/pam_pkcs11.so, необходимо его перенести.
sudo mv /usr/local/lib/security/pam_pkcs11.so /usr/lib64/security/
|
Создание сертификата и импорт его на токен через OpenSSL 3.x:
...
Создать файл конфигурации engine.conf со следующим содержимым:
openssl_conf = openssl_init
[openssl_init]
engines = engine_section
[engine_section]
pkcs11 = pkcs11_section
[pkcs11_section]
engine_id = pkcs11
dynamic_path = usr/lib64/engines-3/pkcs11.so
MODULE_PATH = /usr/lib64/librtpkcs11ecp.so
default_algorithms = ALL
|
При необходимости использовать pkcs11 engine указывать путь к файлу конфигурации engine.conf, например:
$ OPENSSL_CONF= /path/to/engine .conf openssl req -engine pkcs11 -x509 -new -key 0:45 -keyform engine -out cert.crt -subj "/CN=test/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=dev/emailAddress=testuser@mail.com"
|
Сохраните сертификат на токене:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 45
|
Проверьте, что токен подключен и на нем сохранены сертификаты и ключи.
...
Создайте базу данных доверенных сертификатов
sudo mkdir /etc/pam_pkcs11/nssdb
sudo chmod 0644 /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
|
Выгрузите ваш сертификат с токена (если вы пользовались для получения сертификата вышеописанной инструкцией , то ID = 45):
pkcs11-tool --module=/usr/lib64/librtpkcs11ecp.so -l -r -y cert -d <ID> -o cert.crt
|
Добавьте сертификат в доверенные:
sudo cp cert.crt /etc/pki/ca-trust/source/anchors/ # команда вводится из директории, в которую был помещён сертификат
sudo update-ca-trust force-enable
sudo update-ca-trust extract # может занять некоторое время
|
Настройка pam_pkcs11
Создайте (например, на рабочем столе) текстовый файл 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 = signature;
}
use_mappers = digest;
mapper_search_path = /usr/lib64/pam_pkcs11;
mapper digest {
debug = false ;
module = internal;
algorithm = "sha1" ;
mapfile = file:
}
}
|
Поместите файл в каталог /etc/pam_pkcs11/:
cd /etc/pam_pkcs11/
sudo mv pam_pkcs11.conf pam_pkcs11.conf. default #резервное копирование
sudo cp /path/to/your/pam_pkcs11.conf /etc/pam_pkcs11/
|
Регистрация модуля для аутентификации в системе
Подключите модуль к системе авторизации PAM:
sudo vim /etc/pam.d/system-auth
# Для входа по Рутокена на экране приветствия
sudo vim /etc/pam.d/password-auth
|
Перед первым использованием модуля pam_unix добавьте туда строку со следующим содержимым:
auth sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so
|
Сохраните файл и узнайте поля вашего сертификата с помощью следующей команды:
В результате отобразится сообщение:
...
Если pkcs11_eventmgr находится в /usr/local/bin/pkcs11_eventmgr, необходимо его перенести.
sudo mv /usr/local/bin/pkcs11_eventmgr /usr/bin/
|
Для того, чтобы аутентификация корректно работала на лок скрине. В настройках pkcs11_eventmgr нужно указать название сервиса, использующегося при аутентификации через лок скрин, чтобы сделать его доверенным. У каждой графической оболочки свое название данного сервиса. Узнать название вашей графической оболочки можно с помощью команды:
Название графической оболочки
echo $XDG_CURRENT_DESKTOP
|
Вот список соответствий названий графических оболочек и сервиса, используемого лок скрином. Данный список не является полным.
MATE → mate-screensaver
X-Cinnamon → cinnamon-screensaver
fly → <Отсутствует>
KDE → kde
GNOME → xdg-screensaver lock
Для настройки pkcs11_eventmgr служит файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf
Пример файла конфигурации представлен ниже:
pkcs11_eventmgr
{
daemon = true ;
debug = false ;
polling_time = 1;
expire_time = 0;
pkcs11_module = /usr/lib64/librtpkcs11ecp .so;
event card_insert {
on_error = ignore ;
action = "/bin/false" ;
}
event card_remove {
on_error = ignore;
action = "
|
dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lockxdg-screensaver lock" ;
}
event expire_time {
on_error = ignore;
action = "/bin/false" ;
}
}
|
После этого добавьте приложение pkcs11_eventmgr в автозагрузку и перезагрузите компьютер.
Для этого создайте файл ~/.config/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
|