Как игнор самостоятельно подписанные сертификаты с Системы.Чистая.Протоколу HTTP.С помощью HttpClient в Универсальное приложение для Windows
Я создаю переносимую библиотеку классов, что означает, что я должен использовать System. Net. Http. HttpClient для вызова моих веб-API, насколько я понимаю. Проблема заключается в том, что для моего универсального приложения Windows я не могу понять, как игнорировать ошибку, которая возвращается из-за того, что сервер API может иметь самозаверяющий сертификат. Любые предложения будут высоко оценены.
UPDATE: я не могу импортировать никакие сертификаты, так как это будет приложение, которое работает на различных устройствах в различные организации и не практично, чтобы они импортировали самозаверяющий сертификат на каждое устройство, на котором работает приложение.
1 ответ:
Не вариант, так как
System.Net.ServicePointManager.CertificatePolicy
недоступен в UWP. Если вы используетеWindows.Web.Http.HttpClient
вместо этого, то вы можете игнорировать самозаверяющие сертификаты.Обновление:
С другой стороны, вы можете игнорировать ошибки самозаверяющего сертификата, если добавите его к корневым сертификатам приложения.
Два варианта:
Установите его с помощью API:
IBuffer buffer = await FileIO.ReadBufferAsync(file); Certificate rootCert = new Certificate(buffer); CertificateStore rootStore = CertificateStores.TrustedRootCertificationAuthorities; rootStore.Add(rootCert);
Включите его в свой пакет .appxmanifest > декларации > сертификаты > Добавить и установить:
- имя магазина: root
- содержимое: путь к файлу сертификата
При любом из обоих вариантов вы перестанете получать:
System. Net. WebException: базовое соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL / TLS. ---> Система.Безопасность.Идентификация.AuthenticationException: удаленный сертификат недействителен в соответствии с процедура валидации.