当涉及多个服务时,mtls 是否有效?

问题描述 投票:0回答:1

假设我有 2 项服务 服务 A --> 服务 B

Service A (client)
Service B (server)
已设置为执行 mlt,其中
Service A
通过实例化到
WebRequestHandler
HttpClient
附加客户端证书。现在我想添加一个新的 API 服务,如下图所示。 API 服务 --> 服务 A --> 服务 B

此 API 服务没有安装客户端证书,它将请求传递到

Service A
并使用
Service A
HttpClient
将请求发送到
Service B
。 此 API 服务也不与服务 A 一起执行 mtls,它利用其他形式的安全性(我无法控制)

当前我在新的 API 服务上遇到错误,该错误只是说

The request was aborted: Could not create SSL/TLS secure channel.

我想从以下意义上了解更多关于 mtls 的信息:-

  1. 使用 mtls 是否意味着需要在请求开始时提供客户端证书? (这意味着我需要在我的新 API 服务中提供客户端证书)
  2. 在使用链接在一起的多个服务时,使用 mtls 的正确方法是什么?类似于证书传递之类的吗?
c# ssl .net-4.5 mtls
1个回答
0
投票

客户端证书对 mTLS 连接的客户端进行身份验证 - 并且仅对这个直接特定的 mTLS 连接进行身份验证。

因此,如果客户端 A 和服务器 B 之间以及客户端 API 和服务器 A 之间存在直接 mTLS 连接,则 A 的客户端证书可用于在 B 处进行身份验证,API 的客户端证书可用于在 A 处进行身份验证.

但是 API 的客户端证书不能用于针对 B 进行身份验证,因为它们之间没有直接的端到端 mTLS 连接。 A 也不能使用来自 API 的客户端证书来对抗 B,因为 A 没有匹配的私钥。 不过,A 可以终止与 API 的连接,从 API 中提取证书并将其在某个 HTTP 标头内传递给 B。但这不是 API 直接针对 B 进行身份验证,它仍然是针对 A 的 API 身份验证。但是 B 可以使用此信息,如果它信任 A。

因此,API 有可能以某种方式针对 A 进行身份验证,然后 A 使用客户端证书针对 B 进行身份验证 - 根据我对您问题的理解,这就是您想要做的事情。在这种情况下出现错误可能是由于实现此想法时出现错误 - 在不知道具体实现的情况下无法对其进行调试。

© www.soinside.com 2019 - 2024. All rights reserved.