当我使用具有不同客户端证书的https与同一服务器端点建立多个连接时,我遇到了Windows.Web.Http.HttpClient的问题。
我的设置有点像:
连接A:连接到https://www.myserver.com/path?querystring - 使用HttpBaseProtocolFilter创建为“客户端证书A”配置的HttpClient实例。
一切正常。
现在我使用新的HttpClient实例创建另一个连接到同一个服务器(不同的查询字符串),这次过滤器配置为'客户端证书B'。
此连接似乎已通过服务器,但看起来服务器获取了错误的客户端证书。我无法访问服务器或其日志,但是从我发现的错误中我想知道它是否会获得“客户证书A”。
我注意到如果我放一个'。'就会消失。第二个连接中服务器名称的“.com”部分后面的字符。这让我怀疑某些基于服务器名称的缓存。
这在Windows 8.1 Surface平板电脑上失败了。它似乎在我的开发笔记本电脑上正常工作。我正在构建的应用程序是Windows应用商店应用程序,因此这也可能是问题的一部分。
有没有人知道如何缓存客户端证书,或者ssl / tls连接是否是HttpClient实例的“本地”?
Windows App Store应用程序(C#)是否可以清除/禁用/断开任何现有的ssl / tls会话?
欢迎任何指示。
PS:我正在构建的应用程序是一个“监控”应用程序,可以使用不同的客户端证书连接到服务器以访问不同的“帐户”。该应用程序旨在显示多个帐户的聚合视图,因此需要针对同一端点使用多个不同的客户端证书。这一切都适用于Android / iOS版本的应用程序,但我无法使Windows版本工作..(哦,服务器/帐户访问机制不受我的控制在任何方式)
答案 0 :(得分:0)
我注意到如果我放一个'。'就会消失。 '.com'之后的字符 第二个连接中服务器名称的一部分。这让我 怀疑某个地方根据服务器名称进行了一些缓存。
似乎http客户端的缓存行为导致此问题...
您可以尝试以下方式关闭缓存。
HTTPClient every time returns the same string
或关注SO帖子也可以帮助你。
How to stop credential caching on Windows.Web.Http.HttpClient?