Page tree

Versions Compared

Key

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

Table of Contents

...

maxLevel3
minLevel2

...

Подготовка к работе

  1. Подключите

...

  1. устройство семейства Рутокен ЭЦП к компьютеру.

...

  1. Установите следующие пакеты:
    Code Block
    languagebash
    sudo dnf update
    sudo dnf install ccid opensc pam_pkcs11 p11-kit nss-tools

...

  1. Загрузите

...

  1. библиотеку rtPKCS11ecp из Центра загрузки и установите ее:
    Code Block
    languagebash
    sudo rpm -i librtpkcs11ecp-X.X.X.X-X.x86_64.rpm

...

  1. Загрузите модуль интеграции rtengine из Центра загрузки

...

  1.  и установите его:
    Code Block
    languagebash
    unzip rtengine-X.X.X.zip
    sudo dnf install rtengine/

...

  1. X.

...

  1. X.

...

  1. X/Linux/x64/packages/librtengineX-X.X.X-X.x86_64.rpm
    

 

Создание ключей и сертификатов

...

Info

Данный раздел можно пропустить, если у вас уже

...

есть необходимые

...

ключи.

...

  1. Создайте ключи с помощью утилиты pkcs11-tool:
    Code Block
    languagebash
    pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type EC:prime256v1 -l --id 3132
    

...

  1. # Параметр id задает идентификатор ключевой пары.

...

  1. Получите сертификат:Создать

      В OpenSSL 3.0 убрали интерактивный режим. 

      Для работы с pkcs11 engine теперь необходимо сделать следующее:

        1. Создайте файл конфигурации engine.conf со следующим содержимым:

          openssl_conf = openssl_init

          [openssl_init]
          engines = engine_section

          [engine_section]
          rtengine = rtengine_section

          [rtengine_section]
          engine_id = rtengine
          dynamic_path = /usr/lib64/librtengine.so
          pkcs11_path = /usr/lib64/librtpkcs11ecp.so
          rand_token = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP;serial=

        42665c26
        1. <серийный_номер_токена>
          default_algorithms = ALL

          Info
        iconfalse
        Для того, чтобы узнать
        1. Чтобы узнать параметр serial токена,

        можно воспользоваться
        1. воспользуйтесь командой:

          pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -T
         
        При необходимости использовать pkcs11 engine указывать путь к файлу конфигурации engine.conf. Пример создания самоподписанного
        1. Запустите утилиту OpenSSL с модулем rtengine. В команде укажите путь к файлу конфигурации, настроенном в предыдущем шаге. 
          Пример команды создания самоподписанного сертификата:

          OPENSSL_CONF=/путь/
        path
        1. к/
        to
        1. файлу/engine.conf openssl req -utf8 -engine rtengine -keyform engine -key 'pkcs11:id=12' -x509 -new -out cert.crt -subj "/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=devNN/CN=testuser/emailAddress=
        testuser@mail
        1. testuser@mail.com"
          Info
        iconfalse
        id:  идентификатор
        1. Значение id в параметре -key — это идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из

        таблицы 
        1. таблицы ASCII.  Используйте только ASCII-коды печатных символов,

        т.к.
        1. так как id нужно будет передать OpenSSL в виде строки.

        Например 
        1. Например ASCII-кодам

        “3132” соответствует
        1. «3132» соответствует строка

        "
        1. «12

        "
        1. ».
          Для удобства

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

      1. Сохраните сертификат на токене:
        Code Block
        languagebash
        pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so -l -y cert -w cert.crt --id 3132

      ...

      Проверьте, что токен подключен и на нем сохранены сертификаты и ключи.

      Добавление сертификата в список доверенных 

      1. Создайте базу данных доверенных сертификатов:
        Code Block
        languagebash
        sudo mkdir /etc/pam_pkcs11/nssdb

      ...

      1. 
        sudo chmod 777 /etc/pam_pkcs11/nssdb

      ...

      1. 
        sudo certutil -d /etc/pam_pkcs11/nssdb -N # создание базы данных
        

      ...

      1. sudo modutil -dbdir /etc/pam_pkcs11/nssdb/ -add p11-kit-trust -libfile /usr/lib64/pkcs11/p11-kit-trust.so

      ...


      1. Добавьте сертификат в доверенные:

        Code Block
        languagebash
        sudo cp cert.crt /etc/pki/ca-trust/source/anchors/ # команда вводится из директории, в которую был 

      ...

      1. помещен сертификат
        

      ...

      1. sudo update-ca-trust force-enable
        

      ...

      1. sudo update-ca-trust extract # может занять некоторое время

      ...

      Настройка

      ...

      PAM PKCS11

      1. Создайте (например, на рабочем столе) текстовый файл pam_pkcs11.conf со следующим содержимым:
        Code Block
        languageyml
        pam_pkcs11 {
          nullok = false;
          debug = false;
          use_first_pass = false;
          use_authtok = false;
          card_only = false;
          wait_for_card = false;
          use_pkcs11_module = rutokenecp;
        
          # Aktiv Rutoken ECP
          pkcs11_module rutokenecp {
            module = /usr/lib64/librtpkcs11ecp.so;
            slot_num = 0;
            support_thread = true;
            ca_dir = /etc/pam_pkcs11/cacerts;
            crl_dir = /etc/pam_pkcs11/crls;
            cert_policy = certificate;
          }
        
          use_mappers = digest;
        
          mapper_search_path = /usr/lib64/pam_pkcs11;
        
          mapper digest {
           debug = false;
           module = internal;
           algorithm = "sha1";
           mapfile = file:///etc/pam_pkcs11/digest_mapping;
          }
        
        }

      ...

      1. Поместите файл в каталог /etc/pam_pkcs11/:
        Code Block
        languagebash
        cd /etc/pam_pkcs11/

      ...

      1. 
        sudo mv pam_pkcs11.conf pam_pkcs11.conf.default #резервное копирование

      ...

      1. 
        sudo mkdir cacerts crls
        

      ...

      1. sudo cp /

      ...

      1. путь/

      ...

      1. к/

      ...

      1. файлу/pam_pkcs11.conf /etc/pam_pkcs11/

      ...

      ...

      Регистрация модуля PAM PKCS11 для аутентификации в системе 

      ...

      1. Узнайте поля вашего сертификата с помощью следующей команды:
        Code Block
        languagebash
        sudo pkcs11_inspect
        

        В результате отобразится сообщение:

        [user@redos ~]$ sudo pkcs11_inspect
        PIN for token: 
        Printing data for mapper digest:
        CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB
      2. Скопируйте строчку с описанием сертификата в файл /etc/pam_pkcs11/digest_mapping в формате

      ...

      1. <вывод

      ...

      1. команды

      ...

      1. pkcs11_inspect>

      ...

      1. ->

      ...

      1. <имя_пользователя>

      ...

      1. .
        Пример

      ...

      1. :
        Code Block
        languagebash
        [user@redos ~]$ sudo cat /etc/pam_pkcs11/digest_mapping 

      ...

      1. 
        CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB -> user
      2. Подключите модуль к системе авторизации PAM:
        Code Block
        languagebash
        sudo nano /etc/pam.d/system-auth
        # Для входа с 

      ...

      1. помощью устройства 

      ...

      1. Рутокен на экране приветствия 
        sudo nano /etc/pam.d/password-auth

      ...

      1. Перед первым использованием модуля pam_unix добавьте туда строку со следующим содержимым:
        Code Block
        auth   sufficient             pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so

      ...

      Попробуйте аутентифицироваться:

      Code Block
      su <username>
      

      ...

      1. Убедитесь, что аутентификация настроена успешно. Для этого попробуйте аутентифицироваться в терминале или на экране приветствия. Если все настроено правильно, система попросит ввести PIN-код пользователя Рутокена.
        Пример аутентификации:

        • в терминале:

          [user@redos ~]$ su user
          Smart card found.
          Добро пожаловать Rutoken ECP <no label>!
          Smart card PIN: 
          verifying certificate
          Checking signature
          [user@redos ~]$ 

      ...

        • на экране приветствия:

      ...

        • Image Added

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

      В состав пакета libpam pam-pkcs11 входит утилита pkcs11_eventmgr, которая позволяет выполнять различные действия при возникновении событий PKCS#11. С ее помощью можно настроить автоматическую блокировку сессии при извлечении токена.Для настройки pkcs11_eventmgr служит файл конфигурации -

      Чтобы настроить утилиту:

      1. Откройте файл конфигурации /etc/pam_pkcs11/pkcs11_eventmgr.conf.

      ...

      1. Добавьте в конец файла раздел с настройками pkcs11_eventmgr:
        Code Block
        language

      ...

      1. yml
        pkcs11_eventmgr
        {
            # Запуск в бэкграунде
            daemon = true;
             
            # Настройка сообщений отладки
            debug = false;
         
            # Время опроса в секундах
            polling_time = 1;
         
            # Установка тайм-аута на удаление 

      ...

      1. токена
            # По-умолчанию 0
            expire_time = 0;
         
            # Выбор pkcs11 библиотеки для работы с Рутокен
            pkcs11_module = /usr/lib64/librtpkcs11ecp.so;
         
            # Действия с 

      ...

      1. токеном
            # 

      ...

      1. Токен 

      ...

      1. вставлен:
            event card_insert {
                # Оставляем значения по умолчанию (ничего не происходит)
                on_error = ignore ;
         
                action = "/bin/false";
            }
         
            # 

      ...

      1. Токен 

      ...

      1. извлечен
            event card_remove {
                on_error = ignore;
                 
                # Вызываем функцию блокировки экрана в зависимости от 

      ...

      1. среды рабочего стола (Mate, KDE, Gnome)
                action = "mate-screensaver-command --lock";
            }
         
            # 

      ...

      1. Токен долгое время 

      ...

      1. извлечен
            event expire_time {
                # Оставляем значения по умолчанию (ничего не происходит)
                on_error = ignore;
         
                action = "/bin/false";
            }
        }

      ...

      1. Добавьте приложение pkcs11_eventmgr в автозагрузку

      ...

      1. , создав файл /etc/xdg/autostart/smartcard-screensaver.desktop со следующим содержимым:
        Code Block
        language

      ...

      1. text
        [Desktop Entry]
        Type=Application
        Name=Smart Card Screensaver
        Comment=Application to lock screen on smart card removal.
        Exec=/usr/bin/pkcs11_eventmgr daemon
        
      2. Перезагрузите компьютер.