x.509 PEM证书结构

时间:2017-05-15 07:39:22

标签: mongodb x509 pem mongodb-replica-set mongodb-internal-auth

这可能是一个非常愚蠢的问题,但我很难理解这是如何运作的。

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

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

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

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

感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:2)

关于Using x.509 Certificates for Membership Authentication的MongoDB教程是对要求的出色指南,但这里有一份指南,在您获得的证书的背景下进行了解释。

certificates you need are

  1. certification authority (CA)
  2. 的证书(不包括私钥)
  3. 对于副本集中的每个节点,都有一个私钥
  4. 对于副本集中的每个节点,证书包括:
    • 基于该私钥
    • 由同一个CA颁发
    • 按名称标识服务器
  5. 请注意,在不同服务器上运行节点的普通副本集中,每个节点都需要自己的证书。在您的任务中,您已获得一个服务器证书,供每个节点使用;只有在每个节点都在同一台服务器上运行时才会有效。

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

    1. CA的私钥应仅 为CA本身所知。
    2. 当节点A与节点B建立通信时,需要验证节点B的身份;它由节点B向节点A显示其证书(不包括私钥)。
    3. 节点A使用CA的证书来验证节点B的证书(从而验证身份)
    4. 同样,Node B使用CA的证书来验证节点A的证书(从而验证身份)
    5. 对于节点A和B之间的加密通信,节点A必须使用自己的私钥加密其外发消息。保持这个的最方便的地方是它的证书,pem file。此私钥不与任何其他代理共享。
    6. 同样,节点B的pem文件包括节点B的私钥,用于节点B自己使用。
    7. 总而言之,每个节点都需要:

      1. CA的证书
      2. 节点自己的私钥
      3. 节点自己的证书
      4. 这些映射到您提供的文件,如下所示:

        • ca.pem 拥有CA的证书,没有别的。
        • server.pem 包含节点的证书和私钥,以方便使用。
        • 根本不需要
        • client.pem ;据推测,当客户想要连接到正在运行的副本集时,将在以后使用。