我正在一个项目中,该软件使用GnuPG二进制文件执行加密操作。一些功能具有OpenPGP加密的输出,而某些功能具有OpenPGP加密的输入。
为了进行单元测试,我的计划是为unittest@project.example.com生成一个无密码的密钥,并将其包含在存储库中。 (自然地)这会使密钥不适合生产使用,但这很好,因为希望用户生成/使用自己的密钥。
现在我的问题。如果密钥包含在存储库中,则任何人都可以将其上载到密钥服务器,使用它来签名自己的密钥,或撤销它(并上载撤销)。 GPG可以自动从密钥服务器下载密钥,在个人密钥环中拥有这样的密钥(私钥是公共知识)似乎是不明智的。
是否可以将已撤销的密钥版本上载到密钥服务器(因此,没人会信任它),并在回购中包含不撤销密钥的密钥版本?在仍然允许使用相同密钥进行单元测试的同时,是否可以解决密钥出现并在个人密钥链中受到信任的问题?
最佳答案
除非您实际上是从密钥服务器中获取撤消的版本,否则在本地包括未撤消版本的情况下撤消密钥服务器上的密钥将可以正常工作。只需在撤销密钥之前创建一个副本,并确保使用本地甚至新的GnuPG主目录(无论如何,您都应该这样做,以保持单元测试的可重复性并使它们与开发者的帐户分开)。这样,您应该确保您的钥匙链中没有撤销证书,除非有人手动获取了该证书(他不应该这样做,您可能希望在某个地方进行记录)。
要考虑的另一种情况是将主密钥保留为私有,但仅发布密钥子密钥。这可能使随后对实际用于加密的密钥的更改更容易,并防止其他人弄乱主密钥(创建用户ID,撤消所有内容,颁发证书等)。