首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享主证书并使用该证书验证证书

共享主证书并使用该证书验证证书
EN

Stack Overflow用户
提问于 2015-08-08 22:49:09
回答 2查看 15关注 0票数 1

我正在开发一个必须经常下载一些文件的应用程序。我觉得签文件是个好主意。

所以我想要做的第一件事就是创建一个主证书,并以某种方式在程序中分发它,并用它验证开发人员证书。因此,当新开发人员出现时,我们不需要更新与程序一起分发的证书。

我认为apt-key也在使用类似的方法。我读到这和分享钥匙圈有关。

但我想不出如何用GnuPG来实现这个目标。你能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-09 08:24:46

您可以使用create a new OpenPGP key pair使用GnuPG,它由一个公钥和一个私钥组成。您将私钥保持为私有,但释放公钥(例如,将其上载到密钥服务器)。使用私钥执行签名。其他人(获取公钥)现在都可以验证签名确实是由密钥发出的。

为了使其他人能够验证密钥是否真的由您发出,您应该这样做。

  • 把钥匙或指纹(not only a short key ID)至少放在一些HTTPs安全的地方,所以其他人有一些保证它是正确的,并且
  • 将您的密钥签名,通过访问密钥签名方和/或证书颁发机构,CAcert是进入OpenPGP信任网络的良好开端。

如果您随软件发行版一起发布密钥,请考虑使用另一个GnuPG主目录,而不是用户的主目录(因此您不依赖于用户特定的配置和数据)。

我认为apt-key正在使用类似的方法。我读到这和分享钥匙圈有关。

apt基础结构创建了一个内部密钥环,它最初随您的发行版一起提供。它包含Debian的所有公钥(Ubuntu,.;您选择的基于Debian的发行版)开发人员,这样所有的包都可以被验证。

但我想不出GPG是怎么做到的。你能帮忙吗?

所有这些建议都要求在验证软件的GnuPG密钥环中导入“公司密钥”,并具有最终的信任,以便能够根据该密钥进行验证。

  1. 如果您只需要一个将分发文件的开发人员(或构建机器),只需使用单密钥对并根据密钥的指纹验证文件的签名即可。
  2. 另一种解决方案是为每个开发人员创建签名子项,并向每个开发人员发出一个签名子项(当然还有所有公共(子)密钥)。验证仍然可以通过主密钥执行,但是您可以很容易地撤销每个开发人员的子密钥,以防他退出公司。但是很难将单个开发人员与签名联系起来,因为如果需要的话,必须通过指纹手工完成。
  3. 更复杂的设置将包括Debian围绕apt构建的系统,或者使用OpenPGP信任web来验证开发人员的密钥,但这需要更深入地了解不同类别的信任,以及认证是如何工作的。

因此,当新开发人员出现时,我们不需要更新与程序一起分发的证书。

在所有情况下,您仍然需要更新它,但这并没有那么糟糕。只需共享更新的密钥(考虑使用密钥服务器网络进行更新)。对密钥的更改将自动合并,即使有人试图向您发送伪造密钥,它也将是另一个密钥,并且没有上面提到的信任。

票数 2
EN

Stack Overflow用户

发布于 2015-08-09 04:40:24

apt使用GPG安全,主私钥是保密的,但公钥是共享的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31908148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档