我正在设置一个本地mongoDB 副本集,该副本集使用 x.509 来验证集群成员,遵循本指南。
配置文件选项包含两个参数:
certificateKeyFile: <path to its TLS/SSL certificate and key file>
clusterFile: <path to its certificate key file for membership authentication>
似乎 mongoDB(我认为还有其他类似的服务)提供了使用不同的证书/密钥进行服务器到客户端和服务器到服务器(即内部)通信的选项。
这在网络管理中常见吗?如果是,为什么?在客户端和内部通信中使用同一证书会有什么缺陷(如果有的话) ?
编辑 - 啊哈。我想我可能误解你了。不过我会保留我原来的回复。
看起来集群成员证书中所需的属性比非集群服务器通常使用的属性更具体,因此 mongoDB 可以选择使用一个证书进行集群成员操作,使用另一个证书进行正常的服务器到客户端操作。不过,从我的阅读来看,如果 certificateKeyFile 具有所需的属性,则可以将其用于这两个目的。
原始帖子
你误读了这一点
证书用于安全地验证身份。服务器的证书可验证其是否是其声称的服务器,无论其正在与客户端还是另一台成员服务器通信。
客户端的证书验证它是否是其所述的主机名,并且它应该只具有客户端所具有的权限。
例如,如果您将服务器证书分发给所有成员服务器和所有客户端,并使其正常工作,那么任何客户端都可以说“嘿,我是服务器”,然后删除或更改数据。服务器通常被锁定,但客户端计算机会上网并阅读电子邮件,从而暴露于恶意代码;或者被遗弃在咖啡店或被盗 - 在这些情况下,客户端不应再受信任。但是,该客户端仍然拥有一个声明“嘿,我是服务器”的证书。