2016-07-15 2 views
0

Я столкнулся с проблемой с Windows.Web.Http.HttpClient, когда у меня есть несколько соединений с использованием https с разными клиентскими сертификатами, с той же конечной точкой сервера.Windows.Web.Http.HttpClient проблема подключения к одному серверу с разными клиентскими сертификатами

У меня есть установка немного как:

Подключение A: подключение к https://www.myserver.com/path?querystring - с HttpBaseProtocolFilter используется для создания экземпляра HttpClient сконфигурированный для «клиента сертификат».

Все это работает нормально.

Теперь я создаю другое соединение, используя новый экземпляр HttpClient на том же сервере (другая строка запроса), и на этот раз фильтр настроен для «сертификата клиента B».

Это соединение, похоже, доходит до сервера, но похоже, что сервер получает неправильный сертификат клиента. У меня нет доступа к серверу или его журналам, но из ошибок, которые я получаю, я задаюсь вопросом, может ли он вместо этого получить «Client Certificate A».

Я отмечаю, что проблема уходит, если я положил '.' символ после «.com» части имени сервера во втором соединении. Это делает меня подозрительным, что есть некоторая кеширование где-то на основе имени сервера.

Это не работает на планшете Windows 8.1 Surface. Кажется, он работает нормально на моем ноутбуке разработки. Приложение, которое я создаю, представляет собой приложение для Windows Store, поэтому это также может быть частью проблемы.

Кто-нибудь знает, как кэшируются клиентские сертификаты, или соединения ssl/tls являются «локальными» для экземпляра HttpClient?

Может ли приложение Windows App Store (C#) очистить/отключить/отключить любую существующую сессию ssl/tls?

Любые указатели приветствуются.

PS: Приложение, которое я создаю, представляет собой приложение для мониторинга, которое может подключаться к серверу с использованием разных клиентских сертификатов для доступа к различным «учетным записям». Приложение предназначено для отображения агрегированного представления нескольких учетных записей, поэтому необходимо использовать несколько разных клиентских сертификатов для одной и той же конечной точки. Это все работает для версии приложения Android/iOS, но я не могу заставить работать с версией Windows. (Oh, и механизм доступа к серверу/счету не находится под моим контролем)

ответ

0

I note проблема уходит, если я поставлю «.». символ после «.com» часть имени сервера во втором соединении. Это делает меня подозрительным, что есть некоторая кеширование где-то на основе имени сервера.

кажется, что поведение кэша HTTP-клиент вызывает этот вопрос ...

Вы можете попробовать следующий способ включения-выключения кэш.

HTTPClient every time returns the same string

или после SO опубликовать также помогает вам.

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

+0

Thanks! Я думаю, что вторая ссылка, которую вы упомянули, очень хорошо описывает мою проблему, и я проверю ее как решение.Похоже, что только Windows 10 исправляет, поэтому версии версии 8.1 могут все еще иметь проблему. (BTW, проблема возникает, если я нахожу GET или POST-вызовы на сервере) – stope19

Смежные вопросы