【问题标题】:GPG Encrypt Fails in IIS .net App but works in Visual StudioGPG 加密在 IIS .net 应用程序中失败,但在 Visual Studio 中有效
【发布时间】:2016-01-04 01:08:31
【问题描述】:

工作站:Win7 Pro

服务器:Win 2008

VB.net - 使用System.Diagnostics.Process 工具

两台计算机上都安装了 Gpg4win 2.2.5。

密钥对在 Win 7 上生成并备份到服务器。

收件人提供了公钥。

两个密钥都移到了文件共享中

两个 gpg 安装都清除了所有密钥。

已导入密钥对的备份以及接收方的公钥。

两个密钥都是可信的。这都是在 DOS 命令窗口中完成的。

gpg --allow-secret-key-import --import "//fileshare/KeyBackup.gpg"

(结果表明密钥可用)

gpg --allow-secret-key-import --import "//fileshare/PUBLIC.asc"

gpg --edit-key pairkey@mycompany.com(“最终”信任)

gpg --edit-key publicKeys@their.com(“最终”受信任)

在 Visual Studio 中,在我的工作站上,一个 vb.net 应用程序成功加密并签署了一个文件。

将应用程序移至服务器并在 IIS 下运行,加密失败并显示“无密钥”消息。 为了使其更有趣,如果您使用手动 DOS 命令,加密确实可以在服务器上工作.

要加密的文件在共享上,两个应用程序都引用它。

我可以看出两个 Gpg4win 安装是相同的并且具有相同的密钥。两个密钥都是从同一位置以相同的方式导入的。

我等待 Stackoverflow 上层人士的意见。

谢谢

【问题讨论】:

  • GnuPG 使用每个系统用户的密钥环。您是否真的从运行服务的同一系统用户那里导入了密钥?
  • 密钥是在我的工作站上的凭据下创建的。 webapp 不是模拟的,因此它利用系统资源(例如共享)作为服务器。嗯..我会调查的。谢谢
  • 那么这就是问题所在。转储gpg --version 的输出可能会显示有关您的主目录的一些信息,或者只是从您的应用程序中导入密钥。它必须在某些用户的上下文中运行,但您必须找出是哪一个。
  • 好吧,我偶然发现了答案,或者至少是一个修复。我无法提供关于它为什么有效的令人信服的解释,但它确实有效。
  • 在根据您的建议搜索答案时,我遇到了一篇文章,其中展示了如何指定公共、信任和秘密密钥文件的位置,这些文件通常位于 AppData\Local\临时文件夹 我认为 GPG 正在寻找该文件夹中的密钥,但应用程序池标识除外,它当然没有。因此,使用这些命令,我​​能够通过在 IIS 下运行的 webapp 加密文件,该 webapp 具有与我不同的身份。明天上班时我会发布确切的命令。

标签: asp.net vb.net encryption iis-7 gnupg


【解决方案1】:

我尝试将 GNUPGHOME 环境变量设置为特定位置,但从 IIS 运行的 ASP.NET 应用程序似乎不支持它并且找不到我的密钥。

最终我发现它一直试图从 iis 服务器上的 c:\gnupg 中查找密钥文件(与 GNUPGHOME 无关)。我将所有密钥环文件复制到该位置,终于成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2018-08-06
    • 2014-12-30
    相关资源
    最近更新 更多