请有人评论、审核、批评或检查一下我正在考虑的微服务安全设计中是否存在漏洞?
假设我有三个微服务,它们通过REST端点相互通信。每个微服务都包含一个密钥库,其中包含了该微服务的公钥/私钥对,由受信任的证书颁发机构签名。密钥库还包含了其他两个微服务的公钥证书,从源微服务的已签名/可信密钥对中导出。
这种实现方式是有效的,但还是有些不太对劲。
换句话说,每次我引入一个新的微服务时,我必须向其密钥库中添加a)每个现有微服务的公钥证书,并且b)将新微服务的公钥证书添加到每个其他微服务中(假设新微服务必须与每个现有微服务进行双向和安全通信)。
现在,重复上述模式以获取第二个密钥对,用于在REST调用中提供的认证令牌的签名/验证。
我想知道,是否可以共享一个受信任的公钥证书来代替上述操作?这样做是否明智和安全?还是有完全不同的方法?
请礼貌地回答,我在这个领域绝不是专家。
编辑:
在阅读我的原始帖子的回复/评论后,我想到了一个我忽略的细节,这可能会使问题更清晰,从而使评论者能够更好地解决它:所涉及的微服务存在于私有内部网络中,并且只能由该内部网络中的客户端(浏览器或其他微服务)访问。
实际上有一个受信任的CA - 即拥有此内部网络的公司,并且正是该CA签署了微服务的密钥对。
看起来,这个问题的解决方案已经在@Andreas的第一条评论中暗示了,在那里他写道,“只要发行它们的CA是受信任的,它们也将受到信任。”
只要每个新的微服务都使用a)由CA签署的自己的密钥对(一个用于签名,另一个用于加密),并且b)CA的证书进行部署,我便可以放心地部署新的微服务,以确保它们与所有其他微服务安全通信(有其他潜在漏洞我甚至不知道)。
我不知道怎么会误以为我需要为每个微服务的密钥对创建全新的证书,并将这些证书包括在其他微服务的密钥库中(对于每个新微服务重复)。实际上,我所需的只是一个证书,即签署密钥对的CA的证书,位于每个微服务的密钥库中。