假设我有 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 的信息:-
客户端证书对 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 进行身份验证 - 根据我对您问题的理解,这就是您想要做的事情。在这种情况下出现错误可能是由于实现此想法时出现错误 - 在不知道具体实现的情况下无法对其进行调试。