Экспорт закрытого ключа УКЭП в файл, для подписи с помощью 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 шт):
Контейнер Криптопро немного не совместим с openssl.
Чтоб его сделать правильным попробуйте воспользоваться данной статьёй
https://habr.com/ru/articles/693600/
Установите https://github.com/li0ard/cpfx
Запустите
python cpfx.py <ваш файл>
Даже если контейнер правильный, то опенссл у вас похоже без поддержки gost.