2011-08-05 147 views
1

我在網上搜索,但無法找到答案,所以我希望我能在這裏找到一個。Gpg通過網絡瀏覽器加密

我有一個在Windows上運行的Web應用程序和用Perl編寫的IIS。 其中一個腳本可以執行多個任務。其中一個執行命令來加密文件。下面是一個命令:

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它工作正常同一臺服務器上運行相同的命令。

據我所知,當你通過web運行一個腳本時,它以匿名用戶身份運行。所以它沒有看到作爲本地用戶生成的祕密密鑰。如果我通過cmd在本地運行命令,它會看到祕密密鑰,因爲它作爲本地用戶運行。

問題是:我如何解決這個問題,並使腳本工作?

謝謝

-Andrey

+1

查看Web服務器用戶的主目錄,並將密鑰(和其餘配置數據)放在正確的位置。 –

回答

2

我終於想通了如何解決這個問題。
我這樣做的方式是:
1.以本地用戶身份導出公鑰和密鑰。
2.使用web perl腳本導入公鑰。
my $ cmd =「c:\ gnupg \ pub \ gpg --import c:\ public.key」;
qx/$ cmd /;
3.做同樣的事情來導入密鑰。

我必須爲每個密鑰運行腳本一次,以便爲Web服務器用戶創建密鑰。
之後,我的應用程序開始工作完美!

0

在啓動命令之前,您可以使用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/;