代码之家  ›  专栏  ›  技术社区  ›  hitaf

共享主证书并验证证书

  •  1
  • hitaf  · 技术社区  · 9 年前

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

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

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

    但我想不出如何用GnuPG做到这一点。你能帮忙吗?

    2 回复  |  直到 9 年前
        1
  •  2
  •   Community ahmed    7 年前

    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信任网络来验证开发者的密钥,但这需要对不同类别的信任以及认证的工作方式有更深入的了解。

    所以我们不需要在新开发人员到来时更新随程序分发的证书。

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

        2
  •  0
  •   Jasen    9 年前

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