2016-11-30 2 views
1

Мне нужно использовать gnupg_decrypt, чтобы расшифровать файл, который отправляется нам, но не может заставить его работать.Функция PHP-функции GnuPG PHP показывает пустой массив

Когда я использую gnupg_keyinfo, чтобы перечислить все открытые ключи, он возвращает пустой массив. Кто-нибудь знает, почему это происходит?

код я использую:

$res = gnupg_init(); 
$info = gnupg_keyinfo($res, ''); 
print_r($info); 

Глядя на комментарии по ссылке выше, поставив '' в качестве шаблона он должен перечислить все ключи.

Я создал открытый ключ на моем сервере, используя информацию, представленную здесь http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/gpg-cs.html

И когда я бегу GPG --list-ключи это показывает, как успешно создан.

Я где-то читал, что вы должны поставить

putenv('GNUPGHOME=/tmp'); 

в верхней части страницы, для того, чтобы работать, но нет ссылки на ключ в этой папке, и я не могу найти какое место для установки выше.

Я также читаю, что у меня может не быть разрешения на папку, в которой хранится ключ, но я снова не уверен, где она находится.

Может ли кто-нибудь помочь в этом?

Спасибо


Чтобы получить эту работу я сделал следующее

chown -R {{user}} ~/.gnupg chmod 600 ~/.gnupg/* chmod 700 ~/.gnupg

Затем реимпорта ключ, используя gnupg_import функцию

+0

'ls -al ~/.gnupg /'. Убедитесь, что каталог и файлы, которые он содержит, доступны вашему веб-серверу. Возможно, вы захотите попробовать сценарий из командной строки: это поможет вам решить, является ли это проблемой разрешения. Что-то вроде 'php -r 'print_r (gnupg_keyinfo (gnupg_init(),' '));'' – bishop

+0

Привет, епископ, спасибо за ответ. Я запускаю сценарий из командной строки, и он работал, поэтому я предполагаю, что это исключает проблему с разрешениями (спасибо за подсказку кстати). Я опубликовал скриншот того, что возвращается из ls -al ~/.gnupg /. Мне все хорошо, это тебе? r и w для чтения и записи правильно? –

+0

На самом деле, поскольку он * успешно * в командной строке и * не удается * на веб-сервере означает, что это * - проблема с разрешением. Ваш снимок экрана показывает, что эти файлы принадлежат root, а ваш веб-сервер, скорее всего, не запускается с правами root. Вам необходимо изменить права собственности на эти файлы на файлы веб-сервера. Что-то вроде 'chown -R apache ~/.gnupg'. Чтобы узнать пользователя веб-сервера как-то вроде 'ps aux | egrep '(apache | httpd)' '. – bishop

ответ

1

GnuPG имеет для каждого пользователя брелоки. Ваш веб-сервер не будет запускаться как пользователь root (если это так, измените это сразу), поэтому вам нужно проанализировать пользователя веб-сервера и импортировать секретный ключ под эту учетную запись (часто называемый или что-то подобное, также su в). Альтернативно, import the key through a PHP script.