Принудительное использование ASP.NET WebAPI-клиента для отправки сертификата клиента даже при отсутствии совпадения с CA

У меня есть конкретное приложение, которое требует использования клиентских сертификатов для взаимной аутентификации запросов HTTPS. Сервер имеет гибкую политику проверки сертификатов, которая позволяет ему принимать самозаверяющие клиентские сертификаты, которых нет на сервере.Магазин сертификатов. Известно, что это прекрасно работает при использовании curl в качестве клиента.

Что я'мы определили с помощью тестирования и перехвата пакетов, что Microsoft 'с ASP.NETHttpClient пытается быть слишком умным во время рукопожатия SSL. Этот конкретный клиент будет использовать только сертификат клиента (изWebRequestHandler.ClientCertificates сбор), если он имеет цепочку доверия к одному из серверовдоверенные корни. Что я'мы заметили, что если нет сертификатов с цепочкой доверия, то клиент просто выигралне отправлять сертификат вообще во время рукопожатия.

Это понятное поведение по умолчанию, но оно слишком ограничительно, и, похоже, нет способа его отключить. Я экспериментировал с различными другимиWebRequestHandler свойства, в том числеAuthenticationLevel а такжеClientCertificateOptions но безрезультатно.

Есть ли способ заставитьHttpClient отправить сертификат клиента, когда он доступен вClientCertificates сбор, даже если кажется, что он не будет проверять на стороне сервера? Я'Я открыт как для простых, так и для грязных (рефлексов) решений, так как мне действительно нужен этот клиент для работы.

Ответы на вопрос(1)

Ваш ответ на вопрос