【发布时间】:2016-07-15 21:37:16
【问题描述】:
我正在尝试了解 Puppet Master 和 Puppet 节点之间的 HTTPS 通信。我知道会有一个通用的 ca.pem,server.pem,服务器的私钥和公钥将被创建。相同的将在节点侧创建,在 master 中,我们必须信任节点的证书才能建立安全连接。
但在此之后,在通信时将使用哪些密钥?
如果有人可以通过比较上图来解释,那就太好了。 提前致谢。
【问题讨论】:
我正在尝试了解 Puppet Master 和 Puppet 节点之间的 HTTPS 通信。我知道会有一个通用的 ca.pem,server.pem,服务器的私钥和公钥将被创建。相同的将在节点侧创建,在 master 中,我们必须信任节点的证书才能建立安全连接。
但在此之后,在通信时将使用哪些密钥?
如果有人可以通过比较上图来解释,那就太好了。 提前致谢。
【问题讨论】:
您展示的图表描述了只有一侧通过 SSL 证书向另一侧标识自己的情况。这在网络上很常见,但对于 Puppet 来说还不够。
使用 Puppet 代理/主节点设置,主节点不仅必须向代理证明其身份,而且代理还必须向主节点证明 他们的身份。这是有时称为“相互认证”的安排的示例。每一方通过向另一方提供一个准备信任的 SSL 证书来做到这一点,因为该证书是由受信任的机构签署的。这种额外的交换看起来像您图表的步骤 2 和 3,但方向相反。
在 Puppet 中最常见的情况是,主服务器和代理都依赖并信任主服务器运行的私有 CA,但它们也可能依赖外部 CA。无论他们居住在哪里以及由谁操作它们,CA 都由它们自己的证书标识。这些涉及确定其他证书是否受信任,但不涉及加密通信方交换的数据。您的图表不包括获取证书,它总结了给定证书是否受信任的所有方面“3.浏览器验证”。
在建立代理和主服务器后,每个人都知道并信任对方,因此在相互身份验证系统中保护数据传输的方式与在服务器身份验证系统中的方式相同。双向传输的数据(图中未显示)使用协商的对称密码和密钥进行加密。
【讨论】: