Table of Contents |
---|
...
maxLevel | 3 |
---|---|
minLevel | 2 |
...
Подготовка к работе
- Подключите
...
- устройство семейства Рутокен ЭЦП к компьютеру.
...
- Установите следующие пакеты:
Code Block language bash sudo dnf update sudo dnf install ccid opensc pam_pkcs11 p11-kit nss-tools
...
- Загрузите
...
- библиотеку rtPKCS11ecp из Центра загрузки и установите ее:
Code Block language bash sudo rpm -i librtpkcs11ecp-X.X.X.X-X.x86_64.rpm
...
- Загрузите модуль интеграции rtengine из Центра загрузки
...
- и установите его:
Code Block language bash unzip rtengine-X.X.X.zip sudo dnf install rtengine/
...
X.
...
X.
...
X/Linux/x64/packages/librtengineX-X.X.X-X.x86_64.rpm
Создание ключей и сертификатов
...
Info |
---|
Данный раздел можно пропустить, если у вас уже |
...
есть необходимые |
...
ключи. |
...
- Создайте ключи с помощью утилиты
pkcs11-tool
:Code Block language bash pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type EC:prime256v1 -l --id 3132
...
# Параметр id задает идентификатор ключевой пары.
...
- Получите сертификат:Создать
В OpenSSL 3.0 убрали интерактивный режим.
Для работы с pkcs11 engine теперь необходимо сделать следующее:
- Создайте файл конфигурации engine.conf со следующим содержимым:
openssl_conf = openssl_init
[openssl_init]
engines = engine_section
[engine_section]
rtengine = rtengine_section
[rtengine_section]
engine_id = rtengine
dynamic_path = /usr/lib64/librtengine.so
pkcs11_path = /usr/lib64/librtpkcs11ecp.so
rand_token = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP;serial=
<серийный_номер_токена>
default_algorithms = ALL
Info
Для того, чтобы узнатьicon false Чтобы узнать параметр serial токена,
воспользуйтесь командой:
pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T
При необходимости использовать pkcs11 engine указывать путь к файлу конфигурации engine.conf. Пример создания самоподписанногоЗапустите утилиту 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"
Info
icon false id
: идентификаторЗначение
id
в параметре-key
— это идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из
таблицы ASCII. Используйте только ASCII-коды печатных символов,
так как
id
нужно будет передать OpenSSL в виде строки.
Например ASCII-кодам
«3132» соответствует строка
«12
».
Для удобства
можно воспользоваться онлайн-сервисом конвертации строки в ASCII-коды.
- Создайте файл конфигурации engine.conf со следующим содержимым:
- Сохраните сертификат на токене:
Code Block language bash pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 3132
...
Проверьте, что токен подключен и на нем сохранены сертификаты и ключи.
Добавление сертификата в список доверенных
- Создайте базу данных доверенных сертификатов:
Code Block language bash 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
...
Добавьте сертификат в доверенные:
Code Block language bash 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
со следующим содержимым:Code Block language yml 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/
:Code Block language bash 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/
...
...
Регистрация модуля PAM PKCS11 для аутентификации в системе
...
- Узнайте поля вашего сертификата с помощью следующей команды:
Code Block language bash sudo pkcs11_inspect
В результате отобразится сообщение:
[user@redos ~]$ sudo pkcs11_inspect
PIN for token:
Printing data for mapper digest:
CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB - Скопируйте строчку с описанием сертификата в файл
/etc/pam_pkcs11/digest_mapping
в формате
...
<вывод
...
команды
...
pkcs11_inspect>
...
->
...
<имя_пользователя>
...
- .
Пример
...
- :
Code Block language bash [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
- Подключите модуль к системе авторизации PAM:
Code Block language bash sudo nano /etc/pam.d/system-auth # Для входа с
...
помощью устройства
...
Рутокен на экране приветствия sudo nano /etc/pam.d/password-auth
...
- Перед первым использованием модуля
pam_unix
добавьте туда строку со следующим содержимым:Code Block auth sufficient pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so
...
Попробуйте аутентифицироваться:
Code Block |
---|
su <username>
|
...
Убедитесь, что аутентификация настроена успешно. Для этого попробуйте аутентифицироваться в терминале или на экране приветствия. Если все настроено правильно, система попросит ввести PIN-код пользователя Рутокена.
Пример аутентификации:- в терминале:
[user@redos ~]$ su user
Smart card found.
Добро пожаловать Rutoken ECP <no label>!
Smart card PIN:
verifying certificate
Checking signature
[user@redos ~]$
- в терминале:
...
- на экране приветствия:
- на экране приветствия:
...
Настройка автоблокировки
В состав пакета libpam pam-pkcs11
входит утилита pkcs11_eventmgr
, которая позволяет выполнять различные действия при возникновении событий PKCS#11. С ее помощью можно настроить автоматическую блокировку сессии при извлечении токена.Для настройки pkcs11_eventmgr служит файл конфигурации -
Чтобы настроить утилиту:
- Откройте файл конфигурации
/etc/pam_pkcs11/pkcs11_eventmgr.conf
.
...
- Добавьте в конец файла раздел с настройками
pkcs11_eventmgr
:Code Block language
...
yml 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
со следующим содержимым:Code Block language
...
text [Desktop Entry] Type=Application Name=Smart Card Screensaver Comment=Application to lock screen on smart card removal. Exec=/usr/bin/pkcs11_eventmgr daemon
- Перезагрузите компьютер.