1

我已经在 Windows Server 2008 R2 上设置了 Gpg4win,并且网站正在运行 .Net 4.5。

我正在使用 Starksoft OpenPGP dll。

我已经通过远程桌面向 Gpg4win 添加了所需的公钥,但是在浏览器中进行测试时,我在浏览器中得到以下信息:

gpg: EMAIL@EMAIL.COM: skipped: No public key gpg: [stdin]: encryption failed: No public key

我已经在我的机器上进行了本地测试,并直接在服务器上的 GPA 和 Kleopatra 中进行了测试,并且加密工作正常。这让我相信问题在于公钥是通过远程桌面设置的,而应用程序池或类似资源无法访问。

我已经尝试按照某处的建议将 pubring.gpg、secring.gpg 和 trustdb.gpg 复制到网站的受保护子文件夹中(我现在忘记了在哪里),但这没有奏效。

任何想法如何设置公钥以供 IIS 用户访问?

4

2 回答 2

2

研究

继续研究使我想到了这个 SO 问题:Gpg encryption over web browser然后引导我通过 cmd 运行它 -从 ASPX 页面运行命令行,并将输出返回到页面

解决方案

  1. 在某处导出所需的密钥(在本例中为 c:\public.key
  2. 使用以下代码创建一个页面并执行它

    System.Diagnostics.Process si = new System.Diagnostics.Process();
    si.StartInfo.WorkingDirectory = "c:\\";
    si.StartInfo.UseShellExecute = false;
    si.StartInfo.FileName = "cmd.exe";
    si.StartInfo.Arguments = "gpg --import c:\\public.key";
    si.StartInfo.CreateNoWindow = false;
    si.StartInfo.RedirectStandardInput = true;
    si.StartInfo.RedirectStandardOutput = true;
    si.StartInfo.RedirectStandardError = true;
    si.Start();
    string output = si.StandardOutput.ReadToEnd();
    si.Close();
    
  3. 钥匙现在可以工作了:)
于 2013-05-10T08:32:10.763 回答
1

GnuPG 在用户的主目录中查找密钥环,而 IIS 是由其他用户运行的,很可能是这个原因。您可以通过 --keyring 和 --secret-keyring 命令行开关指定公共和秘密密钥环的确切路径。

于 2013-05-09T08:28:57.647 回答