Вызов КриптоПро утилиты csptestf в php для подписи файла в Linux

226
17 ноября 2017, 08:50

Подписываю файл в терминале с помощью команды

csptestf -sfsign -sign -detached -add -in in.txt -out out.sgn 
-base64 -my 'certificate_name' -password some_password -alg GOST94_256

В результате получаю открепленную подпись. При вызове команды в php скрипте с помощью метода shell_exec() возникает ошибка при получении сертификата, т.к. локальные сертификаты недоступны для пользователя www-data.

An error occurred in running the program. /dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/tmain.c:1616:CertOpenStore
Error number 0x2 (2).
The system cannot find the file specified.
An error occurred in running the program.
/dailybuildsbranches/CSP_4_0/CSPbuild/CSP/samples/csptest/signtsf.c:389:Cannot find User certificate: certificate_name
Error number 0x2 (2).
The system cannot find the file specified.

Есть возможность подписать файл в php скрипте сертификатом другого пользователя или сделать сертификат доступным для всех пользователей?

Сертификат установлен в личное хранилище локального пользователя uMy.

Добавлять права в /etc/sudoers на выполнение команды csptestf под sudo для пользователя www-data нельзя.
Проверял подписывания файла в bash скрипте, в котором выполняется смена пользователя и подпись файла. При вызове bash скрипта в php возникает ошибка.

sudo: no tty present and no askpass program specified
sh: echo: I/O error

При установке сертификата в хранилище mCA, mMy также возникает ошибка при подписывании файла в php скрипте.

READ ALSO
QThread signal START

QThread signal START

Добрый день! Не могу найти как запустить QThread из другого класса

228
C++ DLL библиотека

C++ DLL библиотека

Всем приветРеализовал библиотеку, все отлично, оно работает

257
Таймер win32 на С++

Таймер win32 на С++

Здравствуйте, выполняю задания на С++ и всё хорошо, только вот проблема с таймеромВот кусок самого задания:

325