共享主证书并与之验证证书
Sharing master cert and verifying certs with that
我正在开发一个必须经常下载一些文件的应用程序。我认为签署文件是个好主意。
所以我想做的第一件事就是创建一个主证书并以某种方式在程序中分发它并用它来验证开发人员证书。因此,当新开发人员到来时,我们不需要更新我们随程序分发的证书。
我认为apt-key使用的是类似的方法。我读到它与共享密钥环有关。
但我不知道如何使用 GnuPG 做到这一点。你能帮忙吗?
apt 使用 GPG 安全,主私钥保密,但 public 密钥是共享的。
您 create a new OpenPGP key pair 使用 GnuPG,它由一个 public 和一个私钥组成。您将私钥保密,但释放 public 密钥(例如,通过将其上传到密钥服务器)。签名是使用私钥执行的。其他所有人(获得 public 密钥的人)现在可以验证签名是否真的由该密钥发出。
要让其他人能够验证密钥是否真的由您颁发,您应该这样做
- 至少将密钥或指纹 (not only a short key ID) 放在一些 HTTPs 安全的地方,所以其他人 一些 保证它是正确的并且
- 通过密钥签名方and/or 证书颁发机构对您的密钥进行签名,CAcert 是进入 OpenPGP 信任网的良好开端。
如果您随软件分发一起提供密钥,请考虑使用另一个 GnuPG 主目录而不是用户的主目录(这样您就不会依赖于用户特定的配置和数据)。
I think apt-key
is using similar method. I read it has something to do with sharing keyring.
apt 基础设施创建了一个内部密钥环,它最初随您的发行版一起提供。它包含 Debian 的所有 public 密钥(Ubuntu,...;无论您选择基于 Debian 的发行版)开发人员,因此可以验证所有软件包。
But I couldn't figure out how to do that with GPG. Can you help with that?
所有这些提案都要求将 "company key" 导入到验证软件的 GnuPG 密钥环中,并获得最终信任才能根据该密钥进行验证。
如果您只需要一个将分发文件的开发人员(或构建机器),只需要单个密钥对 并根据密钥的指纹验证文件的签名。
另一种解决方案是为每个开发人员创建签名子密钥并发布一个签名子密钥(加上所有public(当然是子键)给每个开发人员。验证仍然通过主键进行,但您可以轻松撤销每个开发人员的子键,以防他离开公司。但是很难将个人开发者与签名联系起来,因为如果需要,必须通过指纹手动完成。
更复杂的设置将包括像 Debian 这样围绕 apt 构建的系统,或者使用 OpenPGP 信任网络来验证开发人员的密钥,但这需要对不同类别的信任有更深入的了解,如何认证有效。
So we don't need to update cert that we distribute with program when a new developer comes.
您仍然需要在所有情况下对其进行更新,但这并不是 那么糟糕。只需共享更新后的密钥(考虑使用密钥服务器网络进行更新)。对密钥的更改将自动合并,即使有人试图向您发送一个伪造的密钥,它也将是一个不同的密钥,并且没有上述信任。
我正在开发一个必须经常下载一些文件的应用程序。我认为签署文件是个好主意。
所以我想做的第一件事就是创建一个主证书并以某种方式在程序中分发它并用它来验证开发人员证书。因此,当新开发人员到来时,我们不需要更新我们随程序分发的证书。
我认为apt-key使用的是类似的方法。我读到它与共享密钥环有关。
但我不知道如何使用 GnuPG 做到这一点。你能帮忙吗?
apt 使用 GPG 安全,主私钥保密,但 public 密钥是共享的。
您 create a new OpenPGP key pair 使用 GnuPG,它由一个 public 和一个私钥组成。您将私钥保密,但释放 public 密钥(例如,通过将其上传到密钥服务器)。签名是使用私钥执行的。其他所有人(获得 public 密钥的人)现在可以验证签名是否真的由该密钥发出。
要让其他人能够验证密钥是否真的由您颁发,您应该这样做
- 至少将密钥或指纹 (not only a short key ID) 放在一些 HTTPs 安全的地方,所以其他人 一些 保证它是正确的并且
- 通过密钥签名方and/or 证书颁发机构对您的密钥进行签名,CAcert 是进入 OpenPGP 信任网的良好开端。
如果您随软件分发一起提供密钥,请考虑使用另一个 GnuPG 主目录而不是用户的主目录(这样您就不会依赖于用户特定的配置和数据)。
I think
apt-key
is using similar method. I read it has something to do with sharing keyring.
apt 基础设施创建了一个内部密钥环,它最初随您的发行版一起提供。它包含 Debian 的所有 public 密钥(Ubuntu,...;无论您选择基于 Debian 的发行版)开发人员,因此可以验证所有软件包。
But I couldn't figure out how to do that with GPG. Can you help with that?
所有这些提案都要求将 "company key" 导入到验证软件的 GnuPG 密钥环中,并获得最终信任才能根据该密钥进行验证。
如果您只需要一个将分发文件的开发人员(或构建机器),只需要单个密钥对 并根据密钥的指纹验证文件的签名。
另一种解决方案是为每个开发人员创建签名子密钥并发布一个签名子密钥(加上所有public(当然是子键)给每个开发人员。验证仍然通过主键进行,但您可以轻松撤销每个开发人员的子键,以防他离开公司。但是很难将个人开发者与签名联系起来,因为如果需要,必须通过指纹手动完成。
更复杂的设置将包括像 Debian 这样围绕 apt 构建的系统,或者使用 OpenPGP 信任网络来验证开发人员的密钥,但这需要对不同类别的信任有更深入的了解,如何认证有效。
So we don't need to update cert that we distribute with program when a new developer comes.
您仍然需要在所有情况下对其进行更新,但这并不是 那么糟糕。只需共享更新后的密钥(考虑使用密钥服务器网络进行更新)。对密钥的更改将自动合并,即使有人试图向您发送一个伪造的密钥,它也将是一个不同的密钥,并且没有上述信任。