Gpg шифрование через веб-браузер - PullRequest
1 голос
/ 05 августа 2011

У меня есть поиск по всей сети, но я не могу найти ответ, поэтому надеюсь найти его здесь.

У меня есть веб-приложение, работающее на Windows и IIS, написанное на Perl. Один из сценариев выполняет несколько задач. Один из них выполняет команду для шифрования файла. Вот команда:

my $cmd = "c:\\gnupg\\pub\\gpg -ase --always-trust --batch --passphrase mypassphrase --output $filename.pgp -r stuff $filename";

qx/$cmd/;

К сожалению, это не работает. Я получаю ошибку:

gpg: no default secret key: No secret key gpg: C:\\Dev\\somefile.csv: sign+encrypt failed: No secret key

Когда я пытаюсь запустить ту же команду на том же сервере из cmd, она работает нормально.

Насколько я понимаю, когда вы запускаете скрипт через Интернет, он запускается как анонимный пользователь. Таким образом, он не видит секретный ключ, сгенерированный как локальный пользователь. Если я запускаю команду локально через cmd, он видит секретный ключ, поскольку он запускается как локальный пользователь.

Вопрос: как мне решить эту проблему и заставить скрипт работать?

Спасибо,

-Andrey

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Я, наконец, понял, как решить эту проблему.
То, как я это сделал, было:
1. Экспортируйте как открытый, так и секретный ключи как локальный пользователь.
2. Импортируйте открытый ключ с помощью веб-perlскрипт.
my $ cmd = "c: \ gnupg \ pub \ gpg --import c: \ public.key";
qx / $ cmd /;
3. Сделайте то же самое для ввода секретного ключа.

Я должен запустить скрипт один раз для каждого ключа, чтобы ключи были созданы для пользователя веб-сервера.
После этого мое приложение стало работать без сбоев!

0 голосов
/ 22 марта 2012

Вместо этого вы можете использовать переменную окружения GNUPGHOME перед запуском вашей команды.

GNUPGHOME=C:\\Users\\myUser\\.gnupg\\ 
my $cmd = "c:\\gnupg\\pub\\gpg -ase --always-trust --batch --passphrase mypassphrase --output $filename.pgp -r stuff $filename";

qx/$cmd/;
...