Windows.Web.Http.HttpClient 使用不同的客户端证书连接到同一服务器时出现问题

Windows.Web.Http.HttpClient issue connecting to same server with different client certificates

当我使用具有不同客户端证书的 https 与同一服务器端点进行多个连接时,我遇到了 Windows.Web.Http.HttpClient 问题。

我的设置有点像:

连接 A:连接到 https://www.myserver.com/path?querystring - 使用 HttpBaseProtocolFilter 来创建为 'client certificate A' 配置的 HttpClient 实例。

一切正常。

现在我创建另一个连接,使用新的 HttpClient 实例到同一服务器(不同的查询字符串),这次过滤器配置为 'client certificate B'。

此连接似乎可以连接到服务器,但服务器似乎获取了错误的客户端证书。我无权访问服务器或其日志,但从我得到的错误中我想知道它是否正在获取 'Client Certificate A' 而不是。

我注意到如果我输入“.”,问题就会消失。第二个连接中服务器名称的“.com”部分后的字符。这让我怀疑某处有一些基于服务器名称的缓存。

这在 Windows 8.1 Surface 平板电脑上失败。它似乎在我的开发笔记本电脑上工作正常。我正在构建的应用程序是 Windows 商店应用程序,因此这也可能是问题的一部分。

是否有人知道如何缓存客户端证书,或者 ssl/tls 连接是否 'local' 到 HttpClient 实例?

Windows App Store 应用程序 (C#) clear/disable/disconnect 任何现有的 ssl/tls 会话可以吗?

欢迎指点。

PS:我正在构建的应用程序是一个 'monitoring' 应用程序,可以使用不同的客户端证书连接到服务器以访问不同的 'accounts'。该应用程序旨在显示多个帐户的聚合视图,因此需要针对同一端点使用多个不同的客户端证书。这一切都适用于应用程序的 Android/iOS 版本,但我无法让 Windows 版本正常工作..(哦,server/account 访问机制无论如何都不在我的控制之下)

I note the problem goes away if I put a '.' character after the '.com' part of the server name in the second connection. This makes me suspicious that there is some caching somewhere based on server name.

似乎是 http 客户端的缓存行为导致了这个问题...

您可以尝试以下方式关闭缓存

或以下 SO post 也对您有帮助。