PECL gnupg, проблема

Dave

Новичок
PECL gnupg, проблема

на линуховом сервере установлен gpg (GnuPG) 1.4.8
php 4.4.7

под своим юзером (myuser) на сервере сгенерил ключи, создалась директория /home/myuser/.gnupg
через консоль все шифрует и расшифровывает как надо.
пробую работать с этим через пхп

вот простейший пример:

PHP:
define ( 'GPG_ENV' , '/home/myuser/.gnupg' );
putenv ('GNUPGHOME='.GPG_ENV);
$res = gnupg_init();
$info = gnupg_keyinfo($res,'myuser');
echo gnupg_geterror($res);
не работает, выводит ошибку: could not init keylist

дальше
читаю тут http://ua2.php.net/manual/ru/ref.gnupg.php
что:
This extension makes use of the keyring of the current user. This keyring is normally located in ~./.gnupg/. To specify a custom location, store the path to the keyring in the environment variable GNUPGHOME.
если я правильно понял то расширение работает с keyring текущего юзера но можно указать свой путь к gnupg директории. А пхп скрипты у меня запускаются от юзера daemon, то есть получается что и ключи я должен был генерить от юзера daemon, и тогда в его хоуме создастся необходимая директория .gnupg' и тогда из пхп я смогу с этим работать, так ?
 

tony2001

TeaM PHPClub
у daemon достаточно прав для чтения /home/myuser/.gnupg ?

>то есть получается что и ключи я должен был генерить от юзера daemon, и тогда
>в его хоуме создастся необходимая директория .gnupg' и тогда из пхп я смогу с
>этим работать, так ?

тоже вариант.
 

stinol

Новичок
У меня такая же ситуация

$res = gnupg_init();
gnupg_addsignkey($res,"C688FBD7394B52C82A7F24E545DA07EDA13DF76D","test");
$signed = gnupg_sign($res,"just a test");
echo $signed;

ключи сгенерил под пользователем myuser
пользователь апача(www) имеет все права на папку /home/myuser/.gnupg
владелец папки myuser
из консоли под пользователем myuser все работает, хотя почему-то спрашивает пароль, но ведь я уго указал в gnupg_addsignkey
через браузер говорит get_key failed

меняем владельца папки на www
из консоли под myuser естественно не работает, но и через браузер тоже не работает, браузер просто по таймауту отваливается

в консоли из под root говорит gnupg_sign(): data signing failed

такое ощущение, что-то с доступом к ключам не лады.
у пользователя www нет домашней директории и создавать ее не планируетсяв целях безопасности.
Так что создать ключи из под пользователя www не удастся

замкнутый круг получается
как быть?
 

tony2001

TeaM PHPClub
>у пользователя www нет домашней директории и создавать ее не планируетсяв целях безопасности.

зачем создавать и причём тут безопасность?
просто пропишите какую-то директорию выше document_root в кач-ве $HOME, должно работать.
 

stinol

Новичок
сгенерил ключи под пользователем www

конструкция
$res = gnupg_init();
$info = gnupg_keyinfo($res,'test');
print_r($info);
работает нормально

так же gnupg_encrypt работает

а вот
$res = gnupg_init();
gnupg_addsignkey($res,"CDEF4D06C25EC3B88B47AE24ED6F452711452054","test");
$signed = gnupg_sign($res,"just a test");
echo $signed;

как не работала так и не работает

-~{}~ 06.03.08 18:13:

причниу, кажется нашел
функция gnupg_sign запрашивает passphrase при подписывании. Если запустить скрипт из шела то выскакивает форма ввода этого пароля
В браузере, понятно, ничего не выскакивает, но и пароль не подставляется из gnupg_addsignkey
Кто знает, почему?

-~{}~ 12.03.08 11:09:

почему gnupg_addsignkey требует ввода пароля, я ведь его указал в третьем параметре?
 
Сверху