Page tree

Versions Compared

Key

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

...

Демонстрация работы проводится на Ubuntu 18.04. Описанная последовательность действий актуальна также для других версий Ubuntu и систем, основанных на Debian.

...

Code Block
languagebash
sudo apt-get install pcscd opensc openssl libpam-p11 libengine-pkcs11-openssl
Warning

Если у вас в ОС установлен OpenSSL 3.х, необходимо обновить библиотеку libp11.

Для этого необходимо выполнить следующие действия: 

Code Block
languagebash
$ sudo apt-get install automake autoconf libssl-dev pkgconf gcc git libtool
$ git clone https://github.com/OpenSC/libp11.git
$ cd libp11
$ autoreconf -i
$ ./configure && make && sudo make install
$ sudo mv /usr/lib/x86_64-linux-gnu/libp11.so.3 /usr/lib/x86_64-linux-gnu/libp11.so.3_orig
$ sudo ln -s /usr/local/lib/libp11.so.3 /usr/lib/x86_64-linux-gnu/libp11.so.3

Общий порядок действий

Настройка pam_p11

...

Создание ключей на токене

  1. Необходимо скачать библиотеку rtpkcs11ecp по ссылке https://www.rutoken.ru/support/download/pkcs/ и установить ее в систему.
  2. Создаем ключевую пару RSA длины 2048 бит c ID "45" (id стоит запомнить, он понадобится при создании сертификата). Аутентификация на токене происходит под сущностью пользователя.

    Code Block
    languagebash
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 45

     

  3. Проверим сгенерированный ключ:

    Code Block
    languagebash
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O

    Создание сертификата и импорт его на токен через OpenSSL 1.1.x

  4. Запускаем openssl

    Code Block
    languagebash
    $ openssl


  5. Формируем самоподписанный сертификат или заявку на сертификат:

    Code Block
    languagebash
    OpenSSL> engine dynamic -pre SO_PATH:/usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:librtpkcs11ecp.so
    ...
    OpenSSL> req -engine pkcs11 -x509 -new -key 0:45 -keyform engine -out client.reqpem -subj "/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=dev/CN=testuser/emailAddress=testuser@mail.com"
    Tip

    Если вы используете не Ubuntu 18.04, вам необходимо проверить местонахождение pkcs11.so. Он может располагаться, например, в /usr/lib/openssl/engines/. Если его найти не удается воспользуйтесь командой find.

    Tip
    titleПримечание

    Если при создании сертификата в OpenSSL убрать ключ -x509, то на выходе получим заявку на сертификат.

    Создание сертификата и импорт его на токен через OpenSSL 3.x

    Настраиваем конфигурационный файл по инструкции
    Формируем самоподписанный сертификат или заявку на сертификат:

    Code Block
    languagebash
    $ OPENSSL_CONF=/path/to/engine.conf openssl req -engine pkcs11 -x509 -new -key 0:45 -keyform engine -out client.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Aktiv/OU=dev/CN=testuser/emailAddress=testuser@mail.com"



  6. Сохраняем сертификат на токен:

    Code Block
    languagebash
    $ pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -l -y cert -w ./client.pem --id 45

    Занесение сертификата в список доверенных

  7. Теперь нам необходимо записать его в файл доверенных сертификатов:

    Code Block
    languagebash
    mkdir ~/.eid
    chmod 0755 ~/.eid
    cat client.pem >> ~/.eid/authorized_certificates
    chmod 0644 ~/.eid/authorized_certificates

...