【发布时间】:2016-05-05 08:27:28
【问题描述】:
我生成了一个私钥/公钥,它在通过控制台应用程序加密/解密文件时工作正常。但是在使用带有 IIS 的 Web API 时,同样的方法不起作用。
google了一下,发现需要把keyring文件从user profile目录移到c:\gnupg。
我可以在 user profile 目录中找到很多文件。需要从这里移动哪些文件?
【问题讨论】:
标签: c# asp.net-web-api gnupg
我生成了一个私钥/公钥,它在通过控制台应用程序加密/解密文件时工作正常。但是在使用带有 IIS 的 Web API 时,同样的方法不起作用。
google了一下,发现需要把keyring文件从user profile目录移到c:\gnupg。
我可以在 user profile 目录中找到很多文件。需要从这里移动哪些文件?
【问题讨论】:
标签: c# asp.net-web-api gnupg
GnuPG 在每个系统用户的 GnuPG 主目录中运行(~/.gnupg/ 在 unixoid 系统上,%USER%\AppData 用于基于 Windows 的系统)。 GnuPG 对该文件夹及其内容的严格权限非常挑剔,默认情况下会拒绝操作,或者至少会警告其他系统用户是否可以访问这些文件。
最重要的文件是 gpg.conf(保存 GnuPG 的配置)、pubring.gpg 或 pubring.kbx 保存公钥和 secring.gpg 保存私钥(此文件从 2.1 版开始合并到 GnuPG 的发布中)。 trustdb.gpg 持有信任信息。
其他文件大多是特定于实现的或用于与gpg-agent 的通信,除非您执行高级 GnuPG 操作,否则对您来说并不重要。
如果您在一个用户下开发服务,并在另一个用户下运行它们,您将不得不再次导入密钥。最好的方法是导出密钥,然后在另一个用户帐户中再次导入它们。
导出公钥
gpg --export [key-id] > public-key.gpg
导出密钥
gpg --export-secret-keys [key-id] > secret-key.gpg
通过例如切换用户上下文
su - [username]
在 unixoid 系统上或为此用户打开一个新的命令提示符(右键单击,“运行方式”)
再次导入密钥和公钥
gpg --import secret-key.gpg
gpg --import public-key.gpg
您可能需要像往常一样添加更多密钥、提供信任等,具体取决于您的个人要求。
您还可以为您的应用程序切换到另一个 GnuPG 主目录。将应用程序数据保存在一起可能是合理的,但不要将其放在C:\gnupg,这是应用程序数据的可怕位置。将文件夹放在您的应用程序存储其应用程序数据的任何位置。
通过--homedir 选项或GNUPGHOME 环境变量更改主目录。您仍然应该为本地操作、测试和生产环境维护单独的主目录 - 一方面,您可以缓解所有权限问题,但不要篡改它们并坚持 GnuPG 的默认设置,另一方面防止交错个人 GnuPG 使用和您的应用。无论如何,在您的测试环境中拥有生产密钥将表明您的开发和发布实践存在严重问题。
【讨论】: