Экспорт закрытого ключа УКЭП в файл, для подписи с помощью php

Мне для подписи файлов в с помощью php необходим закрытый ключ. Имеется на токене контейнер с закрытым ключом и сертификат(публичный ключ). С помощью экспорта из cermgr.msc попробовал экспортировать всё это в сертификат с закрытым ключом формата pkcs#12, в файл "2.pfx". Далее командой

openssl pkcs12 -in 2.pfx -nocerts -out private.key

На что выходит ошибка:

Error outputting keys and certificates
140057444030272:error:06074079:digital envelope routines:EVP_PBE_CipherInit:unknown pbe algorithm:crypto/evp/evp_pbe.c:95:TYPE=1.2.840.113549.1.12.1.80
140057444030272:error:23077073:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 algor cipherinit error:crypto/pkcs12/p12_decr.c:40:
140057444030272:error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error:crypto/pkcs12/p12_decr.c:93:

Причём открытый ключ экспортируется из этого файла нормально:

openssl pkcs12 -in 2.pfx  -nokeys
Enter Import Password:
Bag Attributes
    localKeyID: 01 00 00 00
subject=C = RU, ST = \D0\A1\D1\82\D0\B0\D0\B2\D1\80\D0\BE\D0\BF\D0\BE\D0\BB\D1\8
...

Версия openssl

openssl version
OpenSSL 1.1.1w  11 Sep 2023

Пробовал с ключом -legacy:

 openssl pkcs12 -legacy -in 2.pfx  -nodes
pkcs12: Unrecognized flag legacy
pkcs12: Use -help for summary.

Можно конечно экспортировать закрытый ключ в контейнер с 6ю файлами с расширением *.key, но как их потом объединить в один, тоже не понятно.


Ответы (1 шт):

Автор решения: eri

Контейнер Криптопро немного не совместим с openssl.

Чтоб его сделать правильным попробуйте воспользоваться данной статьёй

https://habr.com/ru/articles/693600/

Установите https://github.com/li0ard/cpfx

Запустите

python cpfx.py <ваш файл>

Даже если контейнер правильный, то опенссл у вас похоже без поддержки gost.

→ Ссылка