Оглавление | ||
---|---|---|
|
...
USB-токены и смарт-карты JaCarta, работающие с
...
Astra Linux
...
- JaCarta PKI - сертифицированные USB-токены и смарт-карты с аппаратной реализацией зарубежных криптоалгоритмов, предназначенные для работы с инфраструктурой открытых ключей (PKI)
...
- ;
- JaCarta-2 ГОСТ - USB-токены и смарт-карты
...
- для использования в качестве сертифицированного средства ЭП (усиленной квалифицированной электронной подписи — УКЭП) и полноценного СКЗИ в системах электронного документооборота (ЭДО), дистанционного банковского обслуживания (ДБО) и др. для обеспечения юридической значимости и неотказуемости действий пользователей, а также для обеспечения целостности и конфиденциальности передаваемых данных
...
- ;
- JaCarta SF/ГОСТ – продукт предназначен для безопасного хранения и транспортировки информации ограниченного доступа (ДСП,
...
- государственная тайна) и состоит из:
аппаратного средства, выполненного в форм-факторе USB-токена (далее - токен);
ПО для ввода в эксплуатацию, управления и администрирования.
Установка программного обеспечения
Для выполнения действий данной инструкции необходимо установить следующее программное обеспечение:
- ПО из репозиториев Astra Linux:
- библиотека libccid
...
- ;
- библиотека libengine-pkcs11-openssl1.1 (но не libengine-pkcs11-openssl);
- пакет libpcsclite1;
- пакет pcscd;
- пакет opensc;
пакет pcsc-tools (необязательно
...
Для установки в терминале введите команду:
...
, доступен начиная с обновления БЮЛЛЕТЕНЬ № 20190912SE16 (оперативное обновление 1.6.3));
- ПО, предоставляемое производителем токена:
- библиотека libjcPKCS11-2 (пакет jcpkcs11-2);
Для установки пакетов из репозиториев Astra Linux в терминале выполнить команду:
Command |
---|
sudo apt install libccid pcscd libpcsclite1 pcsc-tools opensc |
...
Command |
---|
sudo dpkg -i jcPKCS11-2_2.4.0.2946_amd64.deb |
Проверка работы JaCarta в системе
Для проверки работы JaCarta:
Подключите устройство к компьютеру.
Способ №1
Введите команду:
Command |
---|
pcsc_scan |
Способ №2
Введите команду:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -T |
...
title | путь до библиотеки libjcPKCS11-2.so может различаться |
---|
Для того чтобы определить путь до библиотеки libjcPKCS11-2.so введите команду:
Command |
---|
find /usr/*(lib|lib64) -name libjcPKCS11-2.so |
Способ №3
графическая утилита XCA:
XCA: графический интерфейс для работы с токенами
Инициализация токена JaCarta
Для инициализации токена необходимо воспользоваться утилитой pkcs11-tool.
Command |
---|
pkcs11-tool --slot 0x1ffff --init-token --so-pin 00000000 --label 'JaCarta PKI' --module /usr/lib/libjcPKCS11-2.so |
Для задания ПИН кода пользователя используйте команду:
Command |
---|
pkcs11-tool --slot 0x1ffff --init-pin --so-pin 00000000 --login --pin 11111111 --module /usr/lib/libjcPKCS11-2.so |
Информация |
---|
--slot 0x1ffff — указывает в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д. --init-token – команда инициализации токена. --pin - пин код пользователя JaCarta. По умолчанию имеет значение 11111111 --so-pin 00000000 – ПИН код администратора JaCarta PKI. По умолчанию имеет значение 00000000 --label 'JaCarta PKI' - метка(название) устройства. --module - указывает путь до библиотеки libjcPKCS11-2.so |
Предупреждение |
---|
Внимание! Инициализация устройства удалит все данные на JaCarta PKI без возможности восстановления. |
Изменение PIN-кода JaCarta
Для изменения pin-кода JaCarta введите команду:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --login --pin ваш_старый_пин --change-pin --new-pin ваш_новый_пин |
После чего система оповестит Вас о том, что PIN-код успешно изменен:
Using slot 0 with a present token (0x0)
PIN successfully changed
Проверка наличия сертификатов и ключевых пар на JaCarta
Проверка
Чтобы проверить наличие сертификатов и ключевых пар на токене JaCarta введите команду:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -O -l |
В результате в окне терминала отобразится информация обо всех сертификатах и ключевых парах, хранящихся на токене JaCarta:
Блок кода |
---|
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 |
...
libengine-pkcs11-openssl1.1 |
Примечание |
---|
В Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6 без установленных оперативных обновлений используется пакет libengine-pkcs11-openssl, несовместимый с библиотекой libjcPKCS11-2.so, а пакет libengine-pkcs11-openssl1.1 отсутствует. Для корректного функционирования токенов следует:
|
Для установки библиотеки libjcpkcs11-2:
- Загрузить архив с актуальной версией ПО с web-сайта Аладдин: https://www.aladdin-rd.ru/support/downloads/jacarta).
Распаковать архив:
Command unzip jacartauc_*_al_x64.zip Установить загруженный пакет:
Command sudo apt install ./jcpkcs11-*_amd64.deb
В зависимости от используемого обновления ОС установленная библиотека libjcpkc11-2.so может располагаться в разных каталогах. Определить расположение библиотеки можно командой:
Command find /usr/*{lib,lib64} -name libjcPKCS11-2.so
Проверка доступности токена
Информация |
---|
Для проверки доступности токена подключить его к компьютеру. |
Проверка с помощью команды pcs_scan
Выполнить команду:
Command |
---|
pcsc_scan |
Пример вывода команды:
Блок кода | ||
---|---|---|
| ||
Проверка с помощью команды pkcs11-tool
Выполнить команду:
Command |
---|
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
См. XCA: графический инструмент для работы с сертификатами и ключевыми носителями.
Инициализация токена
Предупреждение |
---|
Инициализация устройства удалит все данные на токене без возможности восстановления. Важно: количество попыток ввода паролей ограничено. При превышении ограничения токены блокируются. Если заблокированы (забыты) пароли пользователя и администратора, то токен JaCarta полностью теряет свой функционал, дальнейшая работа с ним невозможна. Восстановление заводских настроек (сброс на заводские настройки) не поддерживаются. Актуальную информацию о применяемых по умолчанию паролях см. PIN-коды (пароли) ключевых носителей JaCarta по умолчанию. Далее в примерах используется PIN-код администратора 00000000 (восемь нулей). В токенах Аладдин JaCarta ГОСТ-2 PIN-код администратора не используется, вместо него используется PUK-код. Подробнее см. документацию, предоставляемую производителем оборудования. Дальнейшие примеры неприменимы к токенамх Аладдин JaCarta ГОСТ-2. |
Инициализировать токен командой pkcs11-tool:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --init-token --so-pin 00000000 --label 'JaCarta PKI' |
Задать PIN-код пользователя командой:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --init-pin --so-pin 00000000 --pin 11111111 |
Где:
- --init-token – команда инициализации токена;
- --pin - PIN-код пользователя JaCarta;
- --so-pin 00000000 – PIN-код администратора;
- --label 'JaCarta PKI' - метка (название) токена;
--module - расположение библиотеки libjcPKCS11-2.so.
Изменение PIN-кода токена
Для изменения PIN-кода токена выполнить команду:
Command |
---|
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-код будет запрошен в интерактивном режиме.
Проверка наличия сертификатов и ключевых пар в токене
Чтобы проверить наличие сертификатов и ключевых пар в токене выполнить команду:
Command |
---|
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) |
выводится информация о ключах и сертификатах, то из токена можно считать сертификат (см. ниже). Если после указанного сообщения не выводится никаких данных, то устройство пустое. Следует обратиться к администратору или создать ключи и сертификат самостоятельно.
Экспорт сертификата из токена
Для экспорта сертификата из токена выполнить команду:
Command |
---|
|
Вместо <id> указать идентификатор (ID), полученный при проверке наличия сертификатов.
Вместо <
название_сертификата>.crt указать имя файла, в который будет экспортирован сертификат.
Генерация ключевой пары
Для генерации ключевой пары выполнить команду:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --label "Astra Linux" --keypairgen --key-type rsa:2048 -l --id 45 |
Создание самоподписанного сертификата
Для создания самоподписанного сертификата:
Выполнить команду:
Command 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
Извлечение сертификата из токена
Command |
---|
|
вместо {id} нужно подставить ID который вы увидите в выводе команды
Если после строчки
Using slot 0 with a present token (0x0)
нет ничего, значит устройство пустое. Следует обратиться к администратору или создать ключи и сертификат самостоятельно.
Создание ключевой пары
Для генерации ключевой пары в терминале следует ввести команду:
Command |
---|
|
Создание самоподписанного сертификата
Для создания самоподписанного сертификата в терминале следует ввести команду:
Command |
---|
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/libeToken.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
|
Примечание |
---|
В Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6 пакет pkcs11 libengine-pkcs11-openssl версии 1.0.2 несовместим с библиотекой libjcPKCS11-2.so. Для корректного функционирования токенов следует:
|
OpenSSL> req -engine pkcs11 -new -key 131071:45 -keyform engine -x509 -out название_вашего_сертификата.crt -outform DER
...
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
...
...
...
...
Предупреждение |
---|
В поле Common Name должно быть указано имя пользователя ОС. |
...
1) Путь до библиотеки pkcs11.so
может отличаться
Для того чтобы определить путь до библиотеки pkcs11.so введите команду:
$ find /usr/*(lib|lib64) -name pkcs11.so
2) Т.к. вышеуказанные команды должны быть неразрывны, их следует обязательно вбивать в консоли openssl Иначе openssl не сможет обратиться к закрытому ключу
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:
Command |
---|
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -l -y cert -w |
...
<название_ |
...
сертификата>.crt -a "Имя_сертификата_в_токене" --id 45 |
...
Проверить наличие ключей
...
и
...
сертификатов
...
в
...
JaCarta:
Command | ||
---|---|---|
| ||
Using slot 0 with a present token (0x0) |
...
Установка дополнительный пакетов
Пуск - Настройки - Менеджер пакетов
...
Установка дополнительных пакетов
- Открыть Графический менеджер пакетов synaptic;
- Через Быстрый фильтр или через поиск
...
- найти и
...
- отметить к установке следующие пакеты:
...
- libccid;
- pcscd;
- libpam-p11
...
- ;
- libpam-pkcs11;
- libp11-3 для Astra Linux Special Edition x.7 или libp11-2 для Astra Linux Special Edition 1.6;
...
- libengine-pkcs11-openssl;
- opensc
...
- ;
- Установить выбранные пакеты;
Или выполнить команду:
Command |
---|
sudo apt |
...
install opensc libengine-pkcs11-openssl libp11- |
...
\* libpam-pkcs11 libpam-p11 pcscd libccid |
Регистрация сертификата в системе
...
Конвертировать ранее созданный сертификат в текстовый формат:
Command openssl x509 -
in
...
<название_
...
сертификата>.crt
-out название_
...
сертификата.pem -inform DER -outform PEM
...
где название
...
_сертификата.pem -
...
имя файла сертификата из токена в текстовом формате;
...
Прочитать с токена сертификат с нужным
...
идентификатором (ID);
Записать полученный сертификат в файл доверенных сертификатов, для чего:
...
...
Создать в домашнем каталоге пользователя подкаталог .eid. Для примера используется имя пользователя Astra-user:
Command sudo mkdir
...
~Astra-user/.
...
eid
Назначить созданному подкаталогу права доступа:
Command sudo chmod 0755
...
~Astra-user/.eid
...
Добавить в файл
.eid
/authorized_certificates
сертификат (если файл не существует, то он будет создан):Command cat
сертификат_из_токена.pem
...
| sudo tee -a ~Astra-user/.eid
/authorized_certificates
...
Установить права доступа на файл:
Command
...
sudo chmod
...
0644 ~/.eid/authorized_certificates
...
Если пользователю разрешено самому модифицировать свой список доверенных сертификатов, то передать ему владение созданным подкаталогом и файлом:
Command sudo chown -R Astra-user:Astra-user ~/.eid
Информация |
---|
При |
chmod 0644 /home/user/.eid/authorized_certificates
...
регистрации нескольких токенов на одном компьютере, необходимо указывать |
...
разным пользователям разные идентификаторы сертификатов. |
Настройка аутентификации
Для настройки аутентификации:
В файл
Настраиваем аутентификацию
Пуск - утилиты - Терминал Fly
...
/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
Выполнить команду:
Command sudo
pam-auth-update
...
В открывшемся окне
...
включить отметку в пункте Pam_p11
...
(остальные отметки изменять не требуется);
Нажать OK .
...
Проверка аутентификации по токену
Для проверки аутентификации по токену
...
Пуск - утилиты - Терминал Fly
...
sudo
login
Вход выполняется с подключенным токеном к компьютеру. В момент ввода пароля будет сообщено, что требуется <PIN пользователя>.
...
:
- Подключить токен к компьютеру;
Выполнить команду:
Command sudo login Astra-user - При выполнении команды вместо пароля пользователя будет запрошен <PIN пользователя>;
- После ввода PIN-кода пользователя вход в сессию этого пользователя должен быть выполнен успешно.
Настройка блокировка компьютера при извлечении токена
В состав пакета 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 в автозагрузку и
...
перезагрузить компьютер.
Дополнительные источники информации
При возникновении вопроса, на который вам не удалось найти ответ в этой инструкции, рекомендуем
обратиться к следующим дополнительным источникам информации:
...
Веб-сайт содержит большой объем справочной информации об устройствах JaCarta.
...
База знаний содержит инструкции по решению большинства ошибок, полезные статьи и ответы
...
на часто задаваемые вопросы. Здесь вы можете найти нужную информацию по ключевым словам.
...
Центр Загрузки