Page tree

Versions Compared

Key

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

Table of Contents


Предварительная подготовка

Info
Подключите устройств семейства Рутокен ЭЦП к компьютеру.

...

# для ubuntu
sudo apt-get update
sudo apt-get install pcscd opensc openssl libpam-p11 libengine-pkcs11-openssl

# для red os
sudo yum update
sudo yum install ccid opensc p11-kit
 
# для alteros
sudo yum update
sudo yum install ccid opensc p11-kit openssl-pkcs11
 
# для astra и alt linux
sudo apt-get update
sudo apt-get install ccid opensc p11-kit
 
# для rosa
sudo dnf --auto-update
sudo dnf install ccid opensc p11-kit

...

Для этого соберите библиотеку libp11 из репозитория. Вместе с ней идет libpkcs11.so начиная с версии 0.4.


Использование ключей на Рутокене

pkcs11-engine позволяет использовать ключи, расположенные на токене.

...

В зависимости от операции будет выбран открытый или закрытый ключ соответственно. Оба ключа пары должны иметь одинаковый идентификатор объекта и/или имя объекта.


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

Вы можете пропустить данный раздел, если у вас уже имеются необходимые RSA ключи.
Если ключей нет, ниже команда для их созданию:

...

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so -O

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


Теперь нужно получить сертификат (путь до библиотеки pkcs11 может отличаться в зависимости от ОС):

...

openssl
 
OpenSSL> engine dynamic -pre SO_PATH:/usr/lib64/engines-1.1/libpkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/lib64/librtpkcs11ecp.so
 
OpenSSL> req -engine pkcs11 -new -key 0:3132 -keyform engine -out request.req


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

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

...

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

Создание подписи в формате CMS

Для создания CMS подписи необходимо иметь сертификат. Создание самоподписанного сертификата было описано выше.
В конфигурационный файл openssl.cnf (он может находится по пути /usr/lib/ssl/) необходимо внести следующие изменения:

...

 Используя -nocerts сертификат подписанта не включается в состав CMS пакета.

Проверка подписи в формате CMS

openssl cms -verify -binary -in signed_cms -inform PEM -out verified_data -CAfile cert.crt -content data_to_sign

...

Если сертификат подписанта не был включен в CMS пакет (отсоединенная подпись), он указывается в опции -certfile.

«Сырая» подпись данных

Используя ключ на Рутокене:

...

Алгоритм хеша будет зависеть от алгоритма ключа.

Проверка «сырой подписи»

Используя ключ на Рутокене:

openssl dgst -keyform engine -verify "pkcs11:your_pkcs11_uri" -engine pkcs11 -signature signature test_data


Шифрование в формате CMS

Info
titleШифрование на ключах с Рутокена

При расшифровании сообщения вырабатывается общий симметричный ключ, который непосредственно и используется при расшифровке. Рутокен позволяет генерировать такой общий ключ только на не извлекаемых закрытых ключах с опцией 'derive' в поле key usage. Для того чтобы указать эту опцию, при генерации ключа используйте флаг  --usage-derive. Например:

pkcs11-tool --module /usr/lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048 -l --id 3132 --usage-derive

...

respondent.cer: сертификат адресата, для которого шифруется сообщение.

Расшифрование на стороне адресата: 

Используя ключ на Рутокене:

...