Page tree

Versions Compared

Key

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

...

  1. Создайте ключи с помощью утилиты pkcs11-tool:
    Code Block
    pkcs11-tool --module /usr/lib64/librtpkcs11ecp.so --keypairgen --key-type EC:prime256v1 -l --id 3132
    # Параметр id задает идентификатор ключевой пары.
  2. Получите сертификат:
    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

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

      Info

      Для того, чтобы Чтобы узнать параметр serial токена, воспользуйтесь командой:

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

      OPENSSL_CONF=/path/to/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.com"
      Info

      Значение id в параметре -key — это идентификатор объекта (CKA_ID) в виде двузначных номеров символов в hex из таблицы ASCII.  Используйте только ASCII-коды печатных символов, так как id нужно будет передать OpenSSL в виде строки. Например ASCII-кодам «3132» соответствует строка «12».
      Для удобства можно воспользоваться онлайн-сервисом конвертации строки в ASCII-коды.

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

...

  1. Создайте (например, на рабочем столе) текстовый файл pam_pkcs11.conf со следующим содержимым:
    Code Block
    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;
      }
    
    }

  2. Поместите файл в каталог /etc/pam_pkcs11/:
    Code Block
    cd /etc/pam_pkcs11/
    
    sudo mv pam_pkcs11.conf pam_pkcs11.conf.default #резервное копирование
    
    sudo mkdir cacerts crls
    
    sudo cp /путь/к/файлу/pam_pkcs11.conf /etc/pam_pkcs11/

...

  1. Узнайте поля вашего сертификата с помощью следующей команды:
    Code Block
    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 в формате формате <вывод команды pkcs11_inspect> -> <имя_пользователя>.
    Пример:
    Code Block
    [user@redos ~]$ sudo cat /etc/pam_pkcs11/digest_mapping 
    CB:13:CA:34:AC:04:CD:BF:A6:17:29:2F:C8:00:6A:D5:54:B8:0B:BB -> user
  3. Подключите модуль к системе авторизации PAM:
    Code Block
    sudo nano /etc/pam.d/system-auth
    # Для входа с помощью устройства Рутокен на экране приветствия 
    sudo nano /etc/pam.d/password-auth
  4. Перед первым использованием модуля pam_unix добавьте туда строку со следующим содержимым:
    Code Block
    auth   sufficient             pam_pkcs11.so pkcs11_module=/usr/lib64/librtpkcs11ecp.so


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

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

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

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

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

...

  1. Отредактируйте файл конфигурации /etc/pam_pkcs11/pkcs11_eventmgr.conf:
    Code Block
    languagebash
    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;
             
            # Вызываем функцию блокировки экрана в зависимости от среды рабочего стола (Mate, KDE, Gnome)
            action = "mate-screensaver-command --lock";
        }
     
        # Токен долгое время извлечен
        event expire_time {
            # Оставляем значения по умолчанию (ничего не происходит)
            on_error = ignore;
     
            action = "/bin/false";
        }
    }
  2. Чтобы добавить Добавьте приложение pkcs11_eventmgr в автозагрузку, создайте создав файл /etc/xdg/autostart/smartcard-screensaver.desktop со следующим содержимым:
    Code Block
    languagebash
    [Desktop Entry]
    Type=Application
    Name=Smart Card Screensaver
    Comment=Application to lock screen on smart card removal.
    Exec=/usr/bin/pkcs11_eventmgr daemon
    
  3. Перезагрузите компьютер.