Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

включая Astra Linux

0 Проверка модели устройства

  1. Подключите USB-токен к компьютеру.
  2. Для определения названия модели USB-токена откройте Терминал и введите команду:

...

В результате в окне Терминала отобразится название модели USB-токена:Image Removed

Code Block
languagebash
 $ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 005: ID 0a89:0030 Aktiv Rutoken ECP
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Убедитесь, что используете: Aktiv Rutoken ECP

...

Загружаем библиотеку через браузер

https://download.rutoken.ru/Rutoken/PAM/1.0.0/x86_64/librtpam.so.1.0.0

или через Терминал

Code Block
languagebash
 $ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PAM/1.0.0/x86_64/librtpam.so.1.0.0


Копируем в системную папку

Code Block
languagebash
$ sudo cp libpam_p11_opensclibrtpam.so.1.0.1.80 /usr/lib/x86_64-linux-gnu/
$ sudo chmod 644 /usr/lib/x86_64-linux-gnu/libpam_p11_opensclibrtpam.so.1.0.1.80

3 Добавляем библиотеку librtpkcs11ecp.so

Загружаем библиотеку через браузер.

Для 64-битной системы используйте ссылку:

https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/librtpkcs11ecp.so

Для 32-битной системы используйте ссылку:

https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x86_64x32/librtpkcs11ecp.so

или через Терминалчерез консоль

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

Для 64-битной системы используйте:

Code Block
languagebash
 $ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x64/librtpkcs11ecp.so

Для 32-битной системы используйте:

Code Block
languagebash
$ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x86_64x32/librtpkcs11ecp.so

Копируем в системную папку  папку  

Code Block
languagebash
$ sudo cp librtpkcs11ecp.so /usr/lib/x86_64-linux-gnu/
$ sudo chmod 644 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so

...

4 Проверяем что Рутокен ЭЦП работает в системе

В Терминале

Code Block
languagebash
$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -T 

В случае если увидите вот такую строку, значит все хорошо.

Rutoken ECP <no label> 

...

5 Считываем сертификат

Проверяем что на устройстве есть сертификат

...

Using slot 0 with a present token (0x0) 

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

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

Using slot 0 with a present token (0x0)
  • выводится информация о ключах и сертификатах, то необходимо считать сертификат и сохранить на диск. Для этого выполните следующую команду, где вместо {id} нужно подставьте ID-сертификата, который вы увидели в выводе предыдущей команды:
Code Block
languagebash
$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -r -y cert --id {id} --output-file cert.crt

В случае, если файл cert.crt создан переходим к пункту 6

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

5.1 Создаем самоподписанный сертификат

Info


Собирайте ветку pkcs11-tool с поддержкой ГОСТ-

2012 из нашего GitHub-а, пока не выпущен релиз OpenSC новее чем 0.19.0.
Или можно собирать утилиту из ветки master OpenSC взяв коммит 8cf1e6f

2012, или используйте релиз OpenSC 0.20.0 или новее

Откройте Терминал

генерируем Генерируем ключевую пару с параметрами:

-- ГОСТ-2012 512 бит (параметр --key-type: GOSTR3410-2012-512:A в команде ниже) или ГОСТ-2012 (256) бит: --key-type GOSTR3410-2012-256:A.А (ГОСТ-2012 512 бит c парамсетом А),  GOSTR3410-2012-256:A (ГОСТ-2012 256 бит с парамсетом A)

--id:  идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из таблицы ASCII.  Используйте только ASCII-коды печатных символов, т.к. id нужно будет передать OpenSSL в виде строки. Например ASCII-кодам “3132” соответствует строка "12".

Info

Для удобства, можно воспользоваться онлайн-сервисом конвертации строки в ASCII-коды.

 

Code Block
languagebash
$ ./pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type GOSTR3410-2012-512:A -l --id 3132

создаем самоподписанный сертификат. Для этого сначала надо установить и настроить для работы с Рутокен OpenSSL 1.1 или новее через специальный модуль rtengine по инструкции: Установка и настройка OpenSSL для работы с rtengine 0.7.x

Чтобы использовать этот id ключевой пары, созданной через pkcs11-tool, в OpenSSL – надо использовать hex-символы из таблицы ASCII, соответствующие этим кодам.

Info

Для удобства, можно воспользоваться онлайн-сервисом конвертации :  https://www.rapidtables.com/convert/number/hex-to-ascii.htmlACSII-кодов в строку.


Например: для ‘--id 3132’ в OpenSSL надо указывать "pkcs11:id=12".  

...

Code Block
languagebash
$ sudo nano /usr/share/pam-configs/p11rtpam-gost

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

Code Block
languagebash
Name: Pam_p11Rutoken PAM GOST
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient /usr/lib/x86_64-linux-gnu/libpam_p11_opensclibrtpam.so.1.0.1.80 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
сохраняем файл, нажимаем Alt Ctrl + X, а затем Y
после этого выполняем

...

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

8 Проверка

Откройте Терминал

...

Для настройки pkcs11_eventmgr служит файл конфигурации - /etc/pam_pkcs11/pkcs11_eventmgr.conf

Для различных дистрибутивов Линукс, команда которая вызывает блокировку учетной записи будет отличаться.

Пример файла конфигурации представлен ниже:

 usr        #   Ubuntu         action

pkcs11_eventmgr
{
    # Запуск в бэкграунде
    daemon = true;
     
    # Настройка сообщений отладки
    debug = false;
 
    # Время опроса в секундах
    polling_time = 1;
 
    # Установка тайм-аута на удаление карты
    # По-умолчанию 0
    expire_time = 0;
 
    # Выбор pkcs11 библиотеки для работы с Рутокен
    pkcs11_module =

 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so;
 
    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Карта извлечена
    event card_remove {
        on_error = ignore;
         

        # Вызываем функцию блокировки экрана
       


        # Для

GNOME 

        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";

            # Для XFCE
            # action = "xflock4";

            # Для Astra Linux (FLY)
            # action = "fly-wmfunc FLYWM_LOCK";
    }
 
    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;
 
        action = "/bin/false";
    }
}



После этого добавьте приложение pkcs11_eventmgr в автозагрузку и перезагрузитесь.

...