【问题标题】:Windows.Web.Http.HttpClient issue connecting to same server with different client certificatesWindows.Web.Http.HttpClient 问题连接到具有不同客户端证书的同一服务器
【发布时间】:2016-11-18 05:06:24
【问题描述】:

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

我的设置有点像:

连接 A:连接到 https://www.myserver.com/path?querystring - 使用用于创建为“客户端证书 A”配置的 HttpClient 实例的 HttpBaseProtocolFilter。

这一切都很好。

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

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

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

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

有没有人知道如何缓存客户端证书,或者 ssl/tls 连接是否是 HttpClient 实例的“本地”连接?

Windows App Store 应用 (C#) 能否清除/禁用/断开任何现有的 ssl/tls 会话?

欢迎指点。

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

【问题讨论】:

    标签: c# ssl windows-store-apps win-universal-app


    【解决方案1】:

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

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

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

    HTTPClient every time returns the same string

    或关注 SO 帖子也可以帮助您。

    How to stop credential caching on Windows.Web.Http.HttpClient?

    【讨论】:

    • 谢谢!我认为您提到的第二个链接很好地描述了我的问题,我将对其进行测试作为解决方案。看起来它只是 Windows 10 修复,所以我的 8.1 版本可能仍然存在问题。 (顺便说一句,无论我对服务器进行 GET 或 POST 类型调用,都会出现问题)
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    相关资源
    最近更新 更多