Page tree

Versions Compared

Key

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

Table of Contents

Настройка системы

Перед началом работы, установите следующие пакеты:

...

Далее потребуется скачать сертификат с токена, если его нету, то генерируем его согласно следующему пункту


Генерация сертификата и запись его на Рутокен

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

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

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


 

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

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

...

sudo nano /etc/ssl/openssl.cnf

В начале файла исправьте следующее:

openssl_conf = openssl_def

И в конце файла добавьте И впишите туда следующее:

[ openssl_def ]

engines = engine_section


[ engine_section ]

rtengine = gost_section


[ gost_section ]

engine_id = rtengine

dynamic_path = /usr/lib64/engines-1.1/rtengine.so

pkcs11_path = /usr/lib64/librtpkcs11ecp.so

default_algorithms = CIPHERS, DIGEST, PKEY, RAND


...

export OPENSSL_CONF=/etc/ssl/openssl.cnf

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

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

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

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

...

pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.cer --id 3132

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

Скачиваем сертификат с токена (если вы пользовались вышеописанной инструкцией для получения сертификата, то ID = 3132)

pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -r -y cert --id 3132 --output-file cert.crt

Конвертируем его в PEM формат

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


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

Открываем файл /etc/pam.d/system-auth

...

В окне экрана приветствия аналогично:

Настройка автоблокировки

В состав пакета libpam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11.

...

pkcs11_eventmgr
{
    # Запуск в бэкграунде
    daemon = true;
      
    # Настройка сообщений отладки
    debug = false;
  
    # Время опроса в секундах
    polling_time = 1;
  
    # Установка тайм-аута на удаление карты
    # По-умолчанию 0
    expire_time = 0;
  
    # Выбор pkcs11 библиотеки для работы с Рутокен
    pkcs11_module = /usr/lib64/librtpkcs11ecp.so;
  
    # Действия с картой
    # Карта вставлена:
    event card_insert {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore ;
  
        action = "/bin/false";
    }
  
    # Карта извлечена
    event card_remove {
        on_error = ignore;
          
        # Вызываем функцию блокировки экрана
        action = "mate-screensaver-command --lock";;
    }
  
    # Карта долгое время извлечена
    event expire_time {
        # Оставляем значения по умолчанию (ничего не происходит)
        on_error = ignore;
  
        action = "/bin/false";
    }
}

...