Содержание

Skip to end of metadata
Go to start of metadata


Аладдин RD JaCarta в AstraLinux


USB-токены и смарт-карты JaCarta, работающие с ОС ASTRALINUX Special Edition(Смоленск, Ленинград, Севастополь) и ASTRALINUX Common Edition(Орёл)

JaCarta PKI - сертифицированные USB-токены и смарт-карты с аппаратной реализацией зарубежных криптоалгоритмов, предназначенные для работы с инфраструктурой открытых ключей (PKI).

JaCarta-2 ГОСТ - USB-токены и смарт-карты, предназначенные для использования в качестве сертифицированного средства ЭП (усиленной квалифицированной подписи — УКЭП) и полноценного СКЗИ в системах электронного документооборота (ЭДО), дистанционного банковского обслуживания (ДБО) и др. для обеспечения юридической значимости и неотказуемости действий пользователей, а также для обеспечения целостности и конфиденциальности передаваемых данных.

JaCarta SF/ГОСТ – продукт предназначен для безопасного хранения и транспортировки информации ограниченного доступа (ДСП, гостайна) и состоит из:

  • аппаратного средства, выполненного в форм-факторе USB-токена;

  • ПО для ввода в эксплуатацию, управления и администрирования.

Установка


Для выполнения действий данной инструкции необходимо установить следующее программное обеспечение:

  • библиотека libccid, libjcPKCS11-2;
  • пакеты libpcsclite1 и pcscd;
  • opensc
  • pcsc-tools

Для установки в терминале введите команду:

user ~$
sudo apt-get install libccid pcscd libpcsclite1 pcsc-tools opensc

Для установки библиотеки libjcPKCS11-2 следует  скачать:

jcPKCS11-2_2.4.0.2946_amd64.deb

user ~$
sudo dpkg -i jcPKCS11-2_2.4.0.2946_amd64.deb


Проверка работы JaCarta в системе


Для проверки работы JaCartaа:
Подключите устройство к компьютеру.

Способ №1

Введите команду:

user ~$
pcsc_scan

Способ №2

Введите команду:


user ~$
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -T


путь до библиотеки libjcPKCS11-2.so может различаться

Для того чтобы определить путь до библиотеки libjcPKCS11-2.so введите команду:
find /usr/*(lib|lib64) -name libjcPKCS11-2.so


Способ №3

графическая утилита XCA:

XCA: графический интерфейс для работы с токенами


Инициализация токена JaCarta


Для инициализации токена необходимо воспользоваться утилитой pkcs11-tool.

user ~$
pkcs11-tool --slot 0x1ffff --init-token --so-pin 00000000 --label 'JaCarta PKI' --module /usr/lib/libjcPKCS11-2.so
Для задания ПИН кода пользователя используйте команду:
user ~$
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 введите команду:

user ~$
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е введите команду:

user ~$
 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


Если после строчки выводится информация о ключах и сертификатах, то необходимо считать сертификат:

Извлечение сертификата из токена



user ~$
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -r -y cert  --id {id} > название_вашего_сертификата.crt
вместо {id} нужно подставить ID который вы увидите в выводе команды


Если после строчки 

Using slot 0 with a present token (0x0) 

нет ничего, значит устройство пустое. Следует обратиться к администратору или создать ключи и сертификат самостоятельно.


Создание ключевой пары


Для генерации ключевой пары в терминале следует ввести команду:

user ~$ pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --label "название_ключа" --keypairgen --key-type rsa:2048 -l --id 45

Создание самоподписанного сертификата


Для создания самоподписанного сертификата в терминале следует ввести команду:

$ 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

1) В Astra Linux SE 1.6 pkcs11 libengine-pkcs11-openssl версии 1.0.2 не совместим с библиотекой libjcPKCS11-2.so. Для корректного функционирования, следует скачать и установить подписанный пакет libengine-pkcs11-openssl1.1 версии 0.4.4-4 для Смоленска 1.6:

 libengine-pkcs11-openssl1.1_0.4.4-4_amd64.deb

2) Либо установить и обновить Обновления безопасности и методические указания Astra Linux Special Edition 1.6


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 []:shuhrat@astralinux.ru

OpenSSL> exit

В поле Common Name должно быть указано имя пользователя ОС.

1) Путь до библиотеки pkcs11.so может отличаться

Для того чтобы определить путь до библиотеки pkcs11.so введите команду:
$ find /usr/*(lib|lib64) -name pkcs11.so

2) Т.к. вышеуказанные команды должны быть неразрывны, их следует обязательно вбивать в консоли openssl (warning) Иначе openssl не сможет обратиться к закрытому ключу

3) Номер слота указывается в десятичной системе счисления. Число 131071 в шестнадцатеричной системе = 0x1ffff



Загрузка сертификата на токен


Создав свой личный сертификат, его следует загрузить на JaCarta:

user ~$
pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -l -y cert -w название_вашего_сертификата.crt -a "Имя_сертификата_в_токене" --id 45

Проверка ключей и сертификатов в JaCarta:

user ~$
Using slot 0 with a present token (0x0)
Public Key Object; RSA 2048 bits
  label:      название_ключа
  ID:         45
  Usage:      encrypt, verify, wrap
Certificate Object, type = X.509 cert
  label:      имя_сертификата_в_токене
  ID:         45


Локальная аутентификация в Astra Linux по JaCarta


Установка дополнительный пакетов

Пуск - Настройки - Менеджер пакетов

через Быстрый фильтр или через поиск находим и отмечаем к установке следующие пакеты: 

  • libccid
  • pcscd
  • libpam-p11
  • libpam-pkcs11
  • libp11-2
  • libengine-pkcs11-openssl
  • opensc


Либо воспользовавшись терминалом FLY:

user ~$
sudo apt-get install opensc libengine-pkcs11-openssl libp11-2 libpam-pkcs11 libpam-p11 pcscd libccid
Регистрация сертификата в системе

Конвертируем сертификат в текстовый формат

user ~$
openssl x509 -in название_вашего_сертификата.crt -out название_вашего_сертификата.pem -inform DER -outform PEM

где название_вашего_сертификата.pem - Ваш сертификат из токена в текстовом формате

Теперь нам необходимо прочитать с токена сертификат с нужным ID и записать его в файл доверенных сертификатов: 
Добавляем сертификат в список доверенных сертификатов


user ~$
mkdir ~/.eid
chmod 0755 ~/.eid
cat Ваш_сертификат_из_токена.pem >> ~/.eid/authorized_certificates
chmod 0644 ~/.eid/authorized_certificates

Для привязки токена к определенному пользователю необходимо указать его домашнюю директорию, например таким образом:


user ~$
mkdir /home/user/.eid
chmod 0755 /home/user/.eid
cat Ваш_сертификат_из_токена.pem >> /home/user/.eid/authorized_certificates
chmod 0644 /home/user/.eid/authorized_certificates

Важно помнить, что при регистрации нескольких токенов на одном компьютере, необходимо указывать пользователям раличные id.


Настраиваем аутентификацию 

Пуск - утилиты - Терминал Fly

user ~$
sudo nano /usr/share/pam-configs/p11

Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient pam_p11_opensc.so /usr/lib/libjcPKCS11-2.so

записываем в файл следующую информацию


сохраняем файл, нажимаем Alt + X, а затем Y
после этого выполняем


user ~$
sudo pam-auth-update

в появившемся окне ставим галку в Pam_p11 и нажимаем OK
 

Вход по токену


Пуск - утилиты - Терминал Fly

sudo login

Вход выполняется с подключенным токеном к компьютеру. В момент ввода пароля будет сообщено, что требуется <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 в автозагрузку и перезагрузитесь.


Дополнительные источники информации


При возникновении вопроса, на который вам не удалось найти ответ в этой инструкции, рекомендуем 
обратиться к следующим дополнительным источникам информации:


https://www.aladdin-rd.ru

Веб-сайт содержит большой объем справочной информации об устройствах JaCarta.


https://kbp.aladdin-rd.ru/
База знаний содержит инструкции по решению большинства ошибок, полезные статьи и ответы на 
часто задаваемые вопросы. Здесь вы можете найти нужную информацию по ключевым словам.


https://www.aladdin-rd.ru/support/downloads

Центр Загрузки




2 Comments

  1. Роман Мылицын , вот статья про джакарту. Вендоры просили пока не публиковать, deb-пакеты "инсайдовские"

  2. понял, отличная статья