x.509 PEM 证书结构

x.509 PEM certificate structure

这可能是一个非常愚蠢的问题,但我正在努力理解它究竟是如何工作的。

我正在与 MongoDB 合作。我有 3 个文件:server.pem、client.pem 和 ca.pem。我需要使用它们在内部验证副本集的成员。

他们三个都很相似。第一个问题是:为什么我需要三个?每个的目的是什么?

我还有一个作业,我必须说明这三个中的每一个是否都必须包含证书和密钥才能工作。我不想直接回答这个问题,但我想知道这是否与 x.509 标准或 MongoDB 本身有关,以及在哪里寻找答案。

我一直在 here 和 Google(主要是维基百科)上进行记录,但我没有在任何地方找到这个主题。

感谢任何帮助。

谢谢

Using x.509 Certificates for Membership Authentication 上的 MongoDB 教程是一个很好的要求指南,但这里的指南在您获得的证书的上下文中进行了解释。

certificates you need are:

  1. certification authority (CA)
  2. 的证书(不包括私钥)
  3. 对于副本集中的每个节点,一个私钥
  4. 对于副本集中的每个节点,一个证书:
    • 基于那个私钥
    • 由同一 CA 颁发
    • 通过名称识别服务器

请注意,在 不同服务器 上的节点 运行 的普通副本集中,每个节点都需要自己的证书。在您的任务中,您已获得单个服务器证书,供每个节点使用;只有当每个节点都在同一台服务器上 运行 时才有效。

由于以下原因,需要那组特定的组件:

  1. CA 的私钥应该只有 CA 自己知道。
  2. 节点A与节点B建立通信时,需要验证节点B的身份;它通过节点 B 向节点 A 显示其证书(不包括私钥)来实现。
  3. 节点 A 使用 CA 的证书来验证节点 B 的证书(以及身份)
  4. 同样,节点 B 使用 CA 的证书来验证节点 A 的证书(以及身份)
  5. 对于节点 A 和 B 之间的加密通信,节点 A 必须使用自己的私钥加密其传出的消息;保存它最方便的地方是在它的证书旁边,在 pem file 中。此私钥不与任何其他代理共享。
  6. 同样,节点B的pem文件包含节点B的私钥,仅供节点B自己使用。

所以综上所述,每个节点需要有:

  1. CA 的证书
  2. 节点自己的私钥
  3. 节点自己的证书

这些映射到您提供的文件如下:

  • ca.pem 有 CA 的证书,没有别的。
  • server.pem包含节点的证书和私钥,为了方便。
  • client.pem根本不需要;大概会在稍后使用,当客户端想要连接到 运行 副本集时。