我在网上搜索,但无法找到答案,所以我希望我能在这里找到答案。
我在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
答案 0 :(得分:2)
我终于找到了解决这个问题的方法
我这样做的方式是:
1.以本地用户身份导出公钥和密钥
2.使用web perl脚本导入公钥
我的$ cmd =“c:\ gnupg \ pub \ gpg --import c:\ public.key”;
QX / $ CMD /;
3.同样输入密钥。
我必须为每个密钥运行一次脚本,以便为Web服务器用户创建密钥 之后,我的申请开始完美无缺!
答案 1 :(得分: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/;