USB-токены и смарт-карты JaCarta, работающие с Astra Linux
аппаратного средства, выполненного в форм-факторе USB-токена (далее - токен);
ПО для ввода в эксплуатацию, управления и администрирования.
Для выполнения действий данной инструкции необходимо установить следующее программное обеспечение:
пакет pcsc-tools (необязательно, доступен начиная с обновления БЮЛЛЕТЕНЬ № 20190912SE16 (оперативное обновление 1.6.3));
Для установки пакетов из репозиториев Astra Linux в терминале выполнить команду:
sudo apt install libccid pcscd libpcsclite1 pcsc-tools opensc libengine-pkcs11-openssl1.1 |
В Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6 без установленных оперативных обновлений используется пакет libengine-pkcs11-openssl, несовместимый с библиотекой libjcPKCS11-2.so, а пакет libengine-pkcs11-openssl1.1 отсутствует. Для корректного функционирования токенов следует:
|
Для установки библиотеки libjcpkcs11-2:
Распаковать архив:
| unzip jacartauc_*_al_x64.zip |
Установить загруженный пакет:
sudo apt install ./jcpkcs11-*_amd64.deb |
В зависимости от используемого обновления ОС установленная библиотека libjcpkc11-2.so может располагаться в разных каталогах. Определить расположение библиотеки можно командой:
| find /usr/*{lib,lib64} -name libjcPKCS11-2.so |
| Для проверки доступности токена подключить его к компьютеру. |
Выполнить команду:
pcsc_scan |
Пример вывода команды:
Выполнить команду:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -T |
Пример вывода команды:
Available slots: Slot 0 (0x1ffff): Aladdin R.D. JaCarta [SCR Interface] (000000000000) 00 00 token label : JaCarta-2 GOST token manufacturer : Aladdin R.D. token model : JaCarta GOST 2.0 token flags : login required, rng, token initialized, PIN initialized, other flags=0x800 hardware version : 1.0 firmware version : 2.55 serial num : 4E46001310573957 pin min/max : 6/32 |
См. XCA: графический инструмент для работы с сертификатами и ключевыми носителями.
Инициализация устройства удалит все данные на токене без возможности восстановления. Важно: количество попыток ввода паролей ограничено. При превышении ограничения токены блокируются. Если заблокированы (забыты) пароли пользователя и администратора, то токен JaCarta полностью теряет свой функционал, дальнейшая работа с ним невозможна. Восстановление заводских настроек (сброс на заводские настройки) не поддерживаются. Актуальную информацию о применяемых по умолчанию паролях см. PIN-коды (пароли) ключевых носителей JaCarta по умолчанию. Далее в примерах используется PIN-код администратора 00000000 (восемь нулей). В токенах Аладдин JaCarta ГОСТ-2 PIN-код администратора не используется, вместо него используется PUK-код. Подробнее см. документацию, предоставляемую производителем оборудования. Дальнейшие примеры неприменимы к токенамх Аладдин JaCarta ГОСТ-2. |
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --init-token --so-pin 00000000 --label 'JaCarta PKI' |
Задать PIN-код пользователя командой:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --init-pin --so-pin 00000000 --pin 11111111 |
Где:
Изменение PIN-кода токена
Для изменения PIN-кода токена выполнить команду:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --login --pin <старый_PIN-код_пользователя> --change-pin --new-pin <новый_PIN-код_пользователя> |
После ввода команды система сообщит, что PIN-код успешно изменен:
Using slot 0 with a present token (0x0) PIN successfully changed |
Здесь и далее в примерах используется опция --pin, позволяющая задать PIN-код пользователя в командной строке. В практических применениях эта опция может быть пропущена, в этом случае PIN-код будет запрошен в интерактивном режиме.
Чтобы проверить наличие сертификатов и ключевых пар в токене выполнить команду:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --pin <PIN-код_пользователя> -O -l |
В результате в окне терминала отобразится информация обо всех сертификатах и ключевых парах, хранящихся на токене:
Using slot 0 with a present token (0x0) Public Key Object; RSA 2048 bits label: Test ID: 45 Usage: encrypt, verify, wrap Certificate Object, type = X.509 cert label: Test ID: 45 |
Если после сообщения
Using slot 0 with a present token (0x0) |
выводится информация о ключах и сертификатах, то из токена можно считать сертификат (см. ниже). Если после указанного сообщения не выводится никаких данных, то устройство пустое. Следует обратиться к администратору или создать ключи и сертификат самостоятельно.
Для экспорта сертификата из токена выполнить команду:
|
Вместо <id> указать идентификатор (ID), полученный при проверке наличия сертификатов.
Вместо <название_сертификата>.crt указать имя файла, в который будет экспортирован сертификат.
Для генерации ключевой пары выполнить команду:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --label "Astra Linux" --keypairgen --key-type rsa:2048 -l --id 45 |
Для создания самоподписанного сертификата:
Выполнить команду:
| openssl |
При выполнении команды будет запущена командная оболочка openssl;
В командной оболочке openssl:
Выполнить команду для подключения библиотеки jcPKCS11-2:
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/libjcPKCS11-2.so |
Пример:
$ 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/libjcPKCS11-2.so (dynamic) Dynamic engine loading support [Success]: SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so [Success]: ID:pkcs11 [Success]: LIST_ADD:1 [Success]: LOAD [Success]: MODULE_PATH:/usr/lib/libjcPKCS11-2.so Loaded: (pkcs11) pkcs11 engine |
Выполнить команду:
req -engine pkcs11 -new -key 131071:45 -keyform engine -x509 -out название_сертификата.crt -outform DER |
Пример:
В поле Common Name указать имя пользователя ОС (в примере ниже и далее используется имя Astra-user). |
Пример:
OpenSSL> req -engine pkcs11 -new -key 131071:45 -keyform engine -x509 -out название_сертификата.crt -outform DER engine "pkcs11" set. Enter PKCS#11 token PIN for Rutoken ECP <no label>: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:RU State or Province Name (full name) [Some-State]:Moscow Locality Name (eg, city) []: Organization Name (eg, company) [Internet Widgits Pty Ltd]: Rusbitech Organizational Unit Name (eg, section) []: Astra Common Name (e.g. server FQDN or YOUR name) []:Astra-user Email Address []:Astra-user@astralinux.ru |
Выйти из командной оболочки openssl выполнив команду:
exit |
Созданный личный сертификат загрузить в JaCarta:
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -l -y cert -w <название_сертификата>.crt -a "Имя_сертификата_в_токене" --id 45 |
Проверить наличие ключей и сертификатов в JaCarta:
Using slot 0 with a present token (0x0) |
Или выполнить команду:
sudo apt install opensc libengine-pkcs11-openssl libp11-\* libpam-pkcs11 libpam-p11 pcscd libccid |
Конвертировать ранее созданный сертификат в текстовый формат:
|
где название_сертификата.pem - имя файла сертификата из токена в текстовом формате;
Прочитать с токена сертификат с нужным идентификатором (ID);
Записать полученный сертификат в файл доверенных сертификатов, для чего:
Создать в домашнем каталоге пользователя подкаталог .eid. Для примера используется имя пользователя Astra-user:
|
Назначить созданному подкаталогу права доступа:
|
Добавить в файл .eid/authorized_certificates сертификат (если файл не существует, то он будет создан):
|
Установить права доступа на файл:
|
Если пользователю разрешено самому модифицировать свой список доверенных сертификатов, то передать ему владение созданным подкаталогом и файлом:
|
При регистрации нескольких токенов на одном компьютере, необходимо указывать разным пользователям разные идентификаторы сертификатов. |
Для настройки аутентификации:
В файл /usr/share/pam-configs/p11 внести следующую информацию:
Name: Pam_p11 Default: yes Priority: 800 Auth-Type: Primary Auth: sufficient pam_p11.so /usr/lib/libjcPKCS11-2.so |
Выполнить команду:
|
В открывшемся окне включить отметку в пункте Pam_p11 (остальные отметки изменять не требуется);
Нажать OK .
Для проверки аутентификации по токену:
Выполнить команду:
| sudo login Astra-user |
В состав пакета 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 библиотеки для работы с JaCarta
pkcs11_module = /usr/lib/libjcPKCS11-2.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 в автозагрузку и перезагрузить компьютер.
https://www.aladdin-rd.ru Веб-сайт содержит большой объем справочной информации об устройствах JaCarta.
https://kbp.aladdin-rd.ru/ База знаний содержит инструкции по решению большинства ошибок, полезные статьи и ответы на часто задаваемые вопросы. Здесь вы можете найти нужную информацию по ключевым словам.
https://www.aladdin-rd.ru/support/downloads Центр Загрузки