Maven Central 工件的预期 GPG 用户 ID?

Gar*_*son 3 sign gnupg pgp openpgp maven

我正在经历在 Maven Central 上获取公司工件的(看似复杂的)程序。然后我进入了GPG签名部分,进入了一个充满困惑和难题的新世界。GPG 有如此多的选择,并且尚不清楚签署公司工件的合理做法应该是什么。

假设 Acme 想要将一个工件发布org.example.acme:foobar:1.0.0到 Maven Central。他们应该使用什么用户 ID 来签名?什么子键?该密钥如何与用户的个人密钥分开?

让我一一解答所有疑问,让您了解为什么它令人困惑。

  • 我应该使用什么电子邮件地址来访问 Acme?我应该使用吗admin@acme.example.com?该身份应该是 Acme 还是 Acme 的一个部门?或者应该只有个人签署工件才能在 Maven 上发布?
  • 评论呢?一位消息人士表示,我们应该完全忽略评论。我应该使用吗"Acme (software) software@acme.example.com"?要不就"Acme acme@acme.example.com"
  • 好吧,也许你会说这并不重要,所有这些都是基于意见的,我可以使用任何对我的公司有用的东西——很好。那么如何将公司 ID 和个人 ID 分开呢?我可以在同一台计算机的同一个密钥环上拥有 Acme 的密钥和 John Doe 的单独密钥吗?那么我在发布工件时如何区分它们?所有示例似乎都假设您使用单一身份。
  • 我应该使用子项吗?我应该为不同的部门创建不同的子项吗?或者相同子项的不同身份?或者是什么?
  • 我应该让我的密钥过期吗?还是只是主键?或者只是子项?

我可以继续说下去……尝试总结一下,所有示例似乎都假设 1) 用户的密钥环上只安装了一个用户 ID,2) 每个签署其工件的人都是个人,而不是公司。

签署组织的 Maven 工件的预期方法是什么?用户如何将组织的密钥与用户的个人密钥分开管理?

Jen*_*rat 5

我应该使用什么电子邮件地址来访问 Acme?我应该使用 admin@acme.example.com 吗?该身份应该是 Acme 还是 Acme 的一个部门?或者应该只有个人签署工件才能在 Maven 上发布?

使用用于使用密钥进行组/部门公共通信的密钥。对于较小的公司,我可能会选择一些通用地址,例如info@acme.example.com.

请勿人群混杂。这是公司密钥,用于识别公司(或公司内部的特定职能)而不是个人。

评论呢?一位消息人士表示,我们应该完全忽略评论。我应该使用“Acme(软件)software@acme.example.com”吗?或者只是“Acme acme@acme.example.com”。

“软件”注释是否添加了任何相关信息?我不这么认为,所以把它放在一边,因为它只会增加噪音。

通常,会添加诸如“签名密钥”之类的内容作为此类密钥的注释。我认为这没有必要,因为用法很明显。如果您想阻止其他人使用该密钥发送加密邮件,最好将密钥的使用限制为仅签名,这会强制执行此限制(并且不仅仅要求其他用户不要使用该密钥进行加密)。

好吧,也许你会说这并不重要,所有这些都是基于意见的,我可以使用任何对我的公司有用的东西——很好。那么我如何保护我的公司和个人 ID 的私密性呢?我可以在同一台计算机的同一个密钥环上拥有 Acme 的密钥和 John Doe 的单独密钥吗?那么我在发布工件时如何区分它们?所有示例似乎都假设您使用单一身份。

您的计算机上可以有任意数量的密钥,这不是问题。Maven(以及其他依赖 GnuPG 的软件)可以配置为使用特定的密钥。通常,您可以在其中输入用户 ID、邮件地址、密钥 ID 或指纹——因为这是一次性配置,最好使用最具体的方式,即指纹。

我应该使用子项吗?我应该为不同的部门创建不同的子项吗?或者相同子项的不同身份?或者...

是的你应该。这是一个重要的关键。将主密钥保持离线状态(放在安全的地方……;其他人的访问权限非常有限,但组织中最重要的人员/经理)。仅分发仅限于签名的子密钥:您可以将此类密钥放在构建服务器上,或者将其交给正在推送构建的员工。如果您需要交换密钥,则不必更改主密钥,而只需更改子密钥(这并不需要花费很多精力,尤其是不需要告诉客户新密钥)。

为了减少离开公司的员工获取密钥副本的情况,请利用 OpenPGP 智能卡(也可能是 YubiKey)。钥匙无法从卡中取出,因此钥匙被盗就等于卡被盗(并且很难被忽视)。