.NET: объект HttpClient, кажется, игнорирует центр сертификации для проверки сертификата сервера: я что-то пропустил? - PullRequest
0 голосов
/ 19 октября 2018

У меня следующая ситуация: я использую объект System.Net.Http.HttpClient (.Net Fx 4.7.1) для доступа к URL, который использует SSL / TLS.Сертификат сервера должен быть доверенным, поскольку он подписан инфраструктурой PKI компании, и мои коллеги обновили хранилище сертификатов клиентского компьютера, чтобы доверять ему.

Однако, если я открою URL-адрес в браузере (IE / Chrome),соединение является доверенным, когда я получаю доступ к тому же URL-адресу с моим объектом HttpClient, я получаю следующую цепочку ошибок:

AggregateException: произошла одна или несколько ошибок.HttpRequestException: произошла ошибка при отправке запроса.WebException: лежащее в основе соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.

Похоже, что в браузере (Internet Explorer / Chrome) есть другая «процедура проверки» в качестве объекта HttpClient.

Еслисделать тест на https://google.com все работает нормально.

Нужно ли сообщать объекту HttpClient, что ему нужно позаботиться о доверенных органах, хранящихся в учетной записи компьютера?С другой стороны, я не нашел никакого свойства для этого.

Я знаю, как обойти исключение с помощью ServerCertificateVAlidateionCallback, но, поскольку мне нужно безопасное и доверенное соединение, это только решение для тестирования.

Есть идеи?очень ценится!Приятно провести время, ребята!

1 Ответ

0 голосов
/ 22 октября 2018

Спасибо, bartonjs

Решено - Обнаружил, что я сделал не так: сертификат и его цепочка все в порядке, моя ошибка заключалась в том, что я все еще подписался на ServicePointManager.ServerCertificateValidationCallback (...) и там я сейчас вернул false , потому что я думал, что ServerCertificateValidationCallback будет вызываться только в случае сбоя проверки сертификата, но на самом деле метод предназначен для выполнения собственной проверки и, конечно,это всегда называется.

Спасибо, что указали мне правильное направление - это был правильный яблочко ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...