(2017-03-19 19:31:28 отредактировано ivan_id)

OpenSSL подпись

Добрый день!

Имеется Rutoken Lite с ключевой парой КриптоПРО (выдан УЦ СКБ Контур).
Необходимо данными ключами подписать файлик.
Работает все в текущем виде под Windows 2008 Server R2. Версия OpenSSL 1.0.2j
Настроил OpenSSL согласно инструкции. OpenSSL видит все нужные ciphers.
Однако при попытке подписать какой-либо файл получаю ошибки.

c:\openssl\openssl smime -engine pkcs11_gost -sign -in  test.txt
-out test.txt.asc -nodetach -binary -signer cert.crt -inkey "" -keyform engine -outform PEM
engine "pkcs11_gost" set.
cannot load signing key file from engine
1940:error:22071041:X509 V3 routines:string_to_hex:malloc failure:.\crypto\x509v3\v3_utl.c:493:
1940:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:.\crypto\engine\eng_pkey.c:124: unable to load signing key file

Конфиг имеет вид:

openssl_conf = openssl_def

...

[openssl_def]
engines = engine_section
 
[engine_section]
gost = gost_section
pkcs11 = pkcs11_section
 
[gost_section]
engine_id = dynamic
dynamic_path = C:/openssl/engines/gost.dll
init = 0
default_algorithms = ALL
 
[pkcs11_section]
engine_id = dynamic
dynamic_path = C:/openssl/engines/pkcs11gost-engine.dll
MODULE_PATH = C:/openssl/engines/rtPKCS11.dll
PIN = 12345678
init = 0
default_algorithms = ALL

Буду очень признателен за помощь!

Re: OpenSSL подпись

ivan_id пишет:

Добрый день!

Имеется Rutoken Lite с ключевой парой КриптоПРО (выдан УЦ СКБ Контур).
Необходимо данными ключами подписать файлик.

Буду очень признателен за помощь!

Здравствуйте!
При таких начальных условиях нужно установить КриптоПро CSP и воспользоваться чем-то вроде КриптоАРМ для подписания файлов.

Re: OpenSSL подпись

Добрый день!  КриптоПро CSP установлен.
Нам нужно именно OpenSSL, так как мы хотим автоматизировать процесс и иметь возможность в дальнейшем перенести это все на *nix.

Re: OpenSSL подпись

ivan_id пишет:

Добрый день!  КриптоПро CSP установлен.
Нам нужно именно OpenSSL, так как мы хотим автоматизировать процесс и иметь возможность в дальнейшем перенести это все на *nix.

Вполне понятно Ваше желание.
Если ключи и сертификат хранятся в контейнере КриптоПро CSP, то работать с ними может только КриптоПро CSP. Если контейнер создан таким образом, что приватный ключ (ключ подписи) является неэкспортируемым, то штатных способов для извлечения этого ключа из контейнера не предусмотрено. Следствием этого является то, что сделать неэкспортруемый ключ подписи, хранящийся в контейнере КриптоПро CSP, доступным из OpenSSL штатно предусмотренными способами нельзя.
Для Linux существует специальная версия КриптоПро CSP: https://www.cryptopro.ru/products/csp/compare

Если Вам необходим именно OpenSSL, нужно чтобы ключи и сертификаты были сгенерированы средствами, использующими токен в качестве СКЗИ и работающими через интерфейс PKCS#11.