Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

USB-токены и смарт-карты JaCarta, работающие с Astra Linux

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

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

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

Установка программного обеспечения

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

  • ПО из репозиториев Astra Linux:
  • ПО, предоставляемое производителем токена:
    • библиотека libjcPKCS11-2 (пакет jcPKCS11jcpkcs11-2);

Для установки пакетов из репозиториев Astra Linux в терминале ввести выполнить команду:

Command
sudo apt install libccid pcscd libpcsclite1 pcsc-tools opensc

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

  • Загрузить файл с пакетом: jcPKCS11-2_2.4.0.2946_amd64.deb (или скачать более новую версию пакета с web-сайта Аладдин: https://www.aladdin-rd.ru/support/downloads/jacarta). ;
  • Установить загруженный пакет:

    Command
    sudo dpkg -i jcPKCS11-2_2.4.0.2946_amd64.deb

    Проверка работы токена

    Для проверки работы токена подключить его к компьютеру.

    Проверка с помощью команды pcs_scan

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

    Command
    pcsc_scan

    Image Removed

    Проверка с помощью команды pkcs11-tool

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

    Command
    pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -T

    Image Removed

    Информация
    titleРасположение библиотеки libjcPKCS11-2.so раздичается в разных обновлениях ОС

    Для того чтобы определить расположение библиотеки libjcPKCS11-2.so ввести команду:

     libengine-pkcs11-openssl1.1


    Примечание

    В Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6 без установленных оперативных обновлений используется пакет libengine-pkcs11-openssl, несовместимый с библиотекой libjcPKCS11-2.so, а пакет  libengine-pkcs11-openssl1.1 отсутствует. Для корректного функционирования токенов следует:

    Для установки библиотеки libjcpkcs11-2:

    1. Загрузить архив с актуальной версией ПО с web-сайта Аладдин: https://www.aladdin-rd.ru/support/downloads/jacarta).
    2. Распаковать архив:

      Command
      unzip jacartauc_*_al_x64.zip


    3. Установить загруженный пакет:

      Command
      sudo apt install ./jcpkcs11-*_amd64.deb

      В зависимости от используемого обновления ОС установленная библиотека libjcpkc11-2.so может располагаться в разных каталогах. Определить расположение библиотеки можно командой:

      Command
      find /usr/*{lib,lib64} -name libjcPKCS11-2.so


    Проверка доступности токена

    Информация
    Для проверки доступности токена подключить его к компьютеру.

    Проверка с помощью команды pcs_scan

    Выполнить команду:

    Command
    pcsc_scan

    Пример вывода команды:

    Блок кода
    collapsetrue


    Проверка с помощью команды pkcs11-tool

    Выполнить команду

    Command
    find /usr/*{lib,lib64} -name libjcPKCS11-2.so

    Проверка с помощью графической утилиты XCA

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

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

    Предупреждение

    Внимание! Инициализация устройства удалит все данные на токене без возможности восстановления. 

    Инициализировать токен командой pkcs11-tool:

    Command
    pkcs11-tool --slot 0x1ffff --init-token --so-pin 00000000 --label 'JaCarta PKI' --module /usrmodule /usr/lib/libjcPKCS11-2.so -T

    Пример вывода командыЗадать PIN-код пользователя командой:

    Command
    pkcs11-tool --slot 0x1ffff --init-pin --so-pin 00000000 --login --pin 11111111 --module /usr/lib/libjcPKCS11-2.so
    Информация
    titleПараметры команды pkcs11-tool:
    Блок кода
    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-код администратора
    --slot 0x1ffff — указывает в какой виртуальный слот подключено устройство. Как правило, это слот 0, но могут быть и другие значения – 1,2 и т.д;
    --init-token – команда инициализации токена;
    --pin - PIN-код пользователя JaCarta. По умолчанию имеет значение 11111111;
    --so-pin 00000000 – PIN-код администратора JaCarta PKI. По умолчанию имеет значение 00000000
    • ;
    • --label 'JaCarta PKI' - метка (название) токена;
      --module - расположение
    до
    • библиотеки libjcPKCS11-2.so.

    Image Removed

    Изменение 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  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
    pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -r -y cert  --id <id> > <название_сертификата>.crt

    Вместо <id> указать идентификатор (ID), полученный при проверке наличия сертификатов. 

    Вместо <название_сертификата>.crt указать имя файла, в который будет экспортирован сертификат.

    Генерация ключевой пары

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

    Command

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

    Image Removed

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

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

    Примечание

    Расположение библиотеки pkcs11.so может отличаться в различных обновлениях ОС. Для того, чтобы определить расположение библиотеки ввести команду:

    Command
    find /usr/*{lib,lib64} -name pkcs11.so2

    Приведенные ниже команды должны быть неразрывны и выполнены в одной сессии командной оболочки openssl, иначе openssl не сможет обратиться к закрытому ключу.

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

      45

    Если после сообщения

    Блок кода
    Using slot 0 with a present token (0x0)

     выводится информация о ключах и сертификатах, то из токена можно считать сертификат (см. ниже). Если после указанного сообщения не выводится никаких данных, то устройство пустое. Следует обратиться к администратору или создать ключи и сертификат самостоятельно.

    Экспорт сертификата из токена

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

    Command
    pkcs11-tool --module /usr/lib/libjcPKCS11-2.so -r -y cert  --id <id> > <название_сертификата>.crt

    Вместо <id> указать идентификатор (ID), полученный при проверке наличия сертификатов. 

    Вместо <название_сертификата>.crt указать имя файла, в который будет экспортирован сертификат.

    Генерация ключевой пары


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

    Command

    pkcs11-tool --module /usr/lib/libjcPKCS11-2.so --label "Astra Linux" --keypairgen --key-type rsa:2048 -l --id 45



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

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

    1. Выполнить команду:

      Command
      openssl

      При выполнении команды будет запущена командная оболочка openssl;

    2. В командной оболочке openssl:

      Выполнить команду:

      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>
      1. Выполнить команду для подключения библиотеки jcPKCS11-2:

        Блок кода
      1. engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:
      1. 1 -pre LOAD -pre MODULE_PATH:/usr/lib/libjcPKCS11-2.so
      (dynamic) Dynamic
      1. Пример:

        Блок кода
        $ openssl
        
        OpenSSL> engine 
      loading support [Success]:
      1. dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-
      1.
      1. 1
      /pkcs11
      1. .
      so [Success]: ID:pkcs11 [Success]: LIST_ADD:
      1. 1
      [Success]: LOAD [Success]: MODULE_PATH:/usr/lib/libjcPKCS11-2.so Loaded: (pkcs11) pkcs11 engine
      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
        


      2. Выполнить

      Примечание

      В Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.6 пакет pkcs11 libengine-pkcs11-openssl версии 1.0.2 несовместим с библиотекой libjcPKCS11-2.so. Для корректного функционирования токенов следует:

      В командной оболочке openssl выполнить
      1. команду:

        Блок кода
        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
        


      2. Выйти из командной оболочки openssl выполнив команду:

        Блок кода
        exit


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

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

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

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

    Command
    Titlepkcs11-tool --module /usr/lib/libjcPKCS11-2.so -O -l

    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

    Image Removed

    и пакета libpam-p11

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

    1. Открыть Графический менеджер пакетов synaptic;
    2. Через Быстрый фильтр или через поиск найти и отметить к установке следующие пакеты:
      1. libccid;
      2. pcscd;
      3. libpam-p11;
      4. libpam-pkcs11;
      5. libp11-3 для Astra Linux Special Edition x.7 или libp11-2 для Astra Linux Special Edition 1.6;
      6. libengine-pkcs11-openssl;
      7. opensc;
    3. Установить выбранные пакеты;

    Или выполнить команду:

    Command
    sudo apt install opensc libengine-pkcs11-openssl libp11-2\* libpam-pkcs11 libpam-p11 pcscd libccid

    Регистрация сертификата в системе

    1. Конвертировать ранее созданный сертификат в текстовый формат:

      Command
      openssl x509 -in название<название_сертификатасертификата>.crt -out название_сертификата.pem -inform DER -outform PEM

      где название_сертификата.pem - имя файла сертификата из токена в текстовом формате;

    2. Прочитать с токена сертификат с нужным идентификатором (ID);

    3. Записать полученный сертификат в файл доверенных сертификатов, для чего:

      1. Создать в домашнем каталоге пользователя подкаталог .eid. Для примера используется имя пользователя Astra-user:

        Command
        sudo mkdir ~Astra-user/.eid


      2. Назначить созданному подкаталогу права доступа:

        Command
        sudo chmod 0755 ~Astra-user/.eid


      3. Добавить в файл .eid/authorized_certificates сертификат (если файл не существует, то он будет создан):

        Command
        cat сертификат_из_токена.pem | sudo tee -a ~Astra-user/.eid/authorized_certificates


      4. Установить права доступа на файл:

        Command
        sudo chmod 0644 ~/.eid/authorized_certificates


      5. Если пользователю разрешено самому модифицировать свой список доверенных сертификатов, то передать ему владение созданным подкаталогом и файлом:

        Command
        sudo chown -R Astra-user:Astra-user ~/.eid



    Информация

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

    Настройка аутентификации

    Для настройки аутентификации:

    1. В файл /usr/share/pam-configs/p11 внести следующую информацию:

      Блок кода
      Name: Pam_p11
      Default: yes
      Priority: 800
      Auth-Type: Primary
      Auth: sufficient pam_p11_opensc.so so /usr/lib/libjcPKCS11-2.so


    2. Выполнить команду:

      Command
      sudo pam-auth-update


    3. В открывшемся окне поставить включить отметку в пункте Pam_p11 (остальные отметки изменять не требуется);

    4. Нажать OK .

    Проверка аутентификации по токену

    Для проверки аутентификации по токену:

    1. Подключить токен к компьютеру;
    2. Выполнить команду:

      Command
      sudo login Astra-user


    3. При выполнении команды вместо пароля пользователя будет запрошен <PIN пользователя>;
    4. После ввода 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 Центр Загрузки