Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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

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

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

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

1 Устанавливаем необходимые пакеты

sudo apt-get install pcscd opensc openssl 

2 Добавляем PAM модуль с поддержкой ГОСТ-2012

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

https://download.rutoken.ru/Rutoken/

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

$ sudo cp libpam_p11_opensc.so.0.1.8 /usr/lib/x86_64-linux-gnu/
$ sudo chmod 644 /usr/lib/x86_64-linux-gnu/libpam_p11_opensc.so.0.1.8

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

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

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

или через консоль

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

 $ wget --no-check-certificate https://download.rutoken.ru/Rutoken/PKCS11Lib/Current/Linux/x86_64/librtpkcs11ecp.so

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

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

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

В Терминале

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

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

Rutoken ECP <no label> 

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

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

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

$ pkcs11-tool --module /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so -O 

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

Using slot 0 with a present token (0x0) 

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

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

Using slot 0 with a present token (0x0)

выводится информация о ключах и сертификатах то необходимо считать сертификат, для этого выполните команду, где вместо {id} нужно подставьте ID который вы увидите в выводе команды:

$ 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 Создаем самоподписанный сертификат

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

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

генерируем ключевую пару ГОСТ-2012 512 бит (параметр --key-type GOSTR3410-2012-512:A в команде ниже) или ГОСТ-2012 (215) бит: --key-type GOSTR3410-2012-256:A.

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

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

Чтобы использовать этот id ключевой пары, созданной через pkcs11-tool, в OpenSSL – надо использовать hex-символы из таблицы ASCII, соответствующие этим кодам.
Удобно использовать онлайн-сервисом для конвертации: https://www.rapidtables.com/convert/number/hex-to-ascii.html
Например: для ‘--id 3132’ в OpenSSL надо указывать "pkcs11:id=12".  

$ openssl req -utf8 -x509 -keyform engine -key "pkcs11:id=12" -engine rtengine -out cert.cer

загружаем сертификат на устройство

$ pkcs11-tool --module /usr/x86_64-linux-gnu/librtpkcs11ecp.so -l -y cert -w cert.crt --id 3132

6 Регистрируем сертификат в системе

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

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

openssl x509 -in cert.crt -out cert.pem -inform DER -outform PEM

Добавляем сертификат в список сертификатов
mkdir ~/.eid
chmod 0755 ~/.eid
cat cert.pem >> ~/.eid/authorized_certificates
chmod 0644 ~/.eid/authorized_certificates

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

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

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

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

Name: Pam_p11
Default: yes
Priority: 800
Auth-Type: Primary
Auth: sufficient usr/lib/x86_64-linux-gnu/libpam_p11_opensc.so.0.1.8 /usr/lib/x86_64-linux-gnu/librtpkcs11ecp.so
сохраняем файл, нажимаем Alt + X, а затем Y
после этого выполняем


$ sudo pam-auth-update

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

8 Проверка

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

$ sudo login 

введите имя пользователя и в случае если система потребует PIN-код от устройства значит все настроено правильно


9 Блокировка компьютера при извлечении токена

В состав пакета 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 библиотеки для работы с Рутокен
    pkcs11_module = /usr/lib/librtpkcs11ecp.so;
 
    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;
 
        action = "/bin/false";
    }
 
    # Карта извлечена
    event card_remove {
        on_error = ignore;
         
        # Вызываем функцию блокировки экрана
                 # Для Ubuntu 
        action = "dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock";
    }
 
    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;
 
        action = "/bin/false";
    }
}

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


  • No labels