Page tree

Versions Compared

Key

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

...

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

# для 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 gdm-plugin-smartcard p11-kit
 
# для alteros
sudo yum update
sudo yum install ccid opensc gdm-plugin-smartcard p11-kit openssl-pkcs11
 
# для astra и alt linux
sudo apt-get update
sudo apt-get install ccid opensc gdm-plugin-smartcard p11-kit
 
# для rosa
sudo dnf --auto-update
sudo dnf install ccid opensc gdm-plugin-smartcard p11-kit


Загрузите модуль librtpkcs11ecp.so и установите:

...

pkcs11-tool --module /usr/lib64lib/librtpkcs11ecp.so --keypairgen --key-type rsa:2048   -l --id   45

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

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

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

...

Для создания CMS подписи необходимо иметь сертификат. В тестовых целях в папке можно воспользоваться нашим SDK.
В папке
sdk\openssl\samples\tool\ предоставлены настройки удостоверяющего центра OpenSSL, который позволяет выпускать сертификаты.

Скопируйте папку sdk\openssl\samples\tool\demoCA и конфигурационный файл openssl.cnf в в папку с OpenSSL и (она может находится по пути /usr/lib/ssl/)
И выполните:

openssl ca -batch -in req.csr -out cert.cer

...

openssl dgst -keyform engine -verify 0:45 -engine pkcs11 -signature signature test_data


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



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

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

pkcs11-tool.exe --module rtPKCS11ECP.dll --login --pin 12345678 --keypairgen --key-type GOSTR3410-2012-256:B --id 3132 --usage-derive



 


  openssl cms -encrypt -binary -<gost28147-xxx-alg> -in test_data -out encrypted_cms -outform PEM respondent.cer


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


gost28147-paramset_a-cfb (для rtengine 0.7): алгоритм, работает в режиме гаммирования с обратной связью с набором параметров А.


gost28147-cfb (для rtengine новее 0.7): алгоритм, работает в режиме гаммирования с обратной связью с набором параметров Z.


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


Используя ключ в файле:


   openssl cms -decrypt -binary -in encrypted_cms -inform PEM -recip respondent.cer -inkey seckey.pem -out decrypted_cms_data


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


   openssl cms -decrypt -binary -in encrypted_cms -inform PEM -recip respondent.cer -keyform engine -inkey "pkcs11:your_pkcs11_uri" -engine rtengine -out decrypted_cms_data