【问题标题】:Sharing master cert and verifying certs with that共享主证书并与之验证证书
【发布时间】:2015-08-08 22:49:09
【问题描述】:

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

所以我想做的第一件事是创建一个主证书并以某种方式将其分发到程序中并以此验证开发人员证书。所以当新的开发者到来时,我们不需要更新我们随程序分发的证书。

我认为 apt-key 正在使用类似的方法。我读到它与共享密钥环有关。

但我不知道如何使用 GnuPG 做到这一点。你能帮忙吗?

【问题讨论】:

    标签: pgp digital-signature rsa gnupg


    【解决方案1】:

    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. 1234563 /p>

    所以当新的开发者到来时,我们不需要更新我们随程序分发的证书。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2021-04-13
        • 1970-01-01
        • 1970-01-01
        • 2022-12-16
        • 2017-04-28
        • 1970-01-01
        • 2020-07-21
        • 2017-06-13
        • 2019-03-29
        相关资源
        最近更新 更多