【发布时间】: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