我在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用户访问?
答案 0 :(得分:2)
<强>研究强>
继续研究引导我提出这个问题:Gpg encryption over web browser然后引导我通过cmd运行它 - Running Command line from an ASPX page, and returning output to page
<强>解决方案强>
使用以下代码创建一个页面并执行它
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();
答案 1 :(得分:1)
GnuPG在用户的主目录中查找密钥环,而IIS由其他用户运行,这很可能就是原因所在。您可以通过--keyring和--secret-keyring命令行开关指定公钥和密钥的确切路径。