【问题标题】:Gpg encryption over web browser通过网络浏览器进行 Gpg 加密
【发布时间】:2012-03-23 00:20:34
【问题描述】:

我在网上搜索过,但找不到答案,所以我希望我能在这里找到一个。

我有一个在 Windows 和 IIS 上运行的 Web 应用程序,它是用 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 在本地运行命令,它会看到密钥,因为它以本地用户身份运行。

问题是:我该如何解决这个问题并使脚本工作?

谢谢,

-安德烈

【问题讨论】:

  • 查看网络服务器用户的主目录在哪里,并将密钥(以及其余配置数据)放在正确的位置。

标签: encryption gnupg


【解决方案1】:

我终于想出了如何解决这个问题。
我这样做的方式是:
1. 以本地用户身份导出公钥和私钥。
2. 使用 web perl 脚本导入公钥。
我的 $cmd = "c:\gnupg\pub\gpg --import c:\public.key";
qx/$cmd/;
3. 导入密钥。

我必须为每个密钥运行一次脚本,以便为 Web 服务器用户创建密钥。
之后我的应用程序开始完美运行!

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-12-06
      • 2019-11-25
      • 2011-07-01
      • 2020-01-12
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 2013-07-05
      • 2011-08-26
      相关资源
      最近更新 更多