Как установить сертификат для эмулятора Visual Studio для эмулятора Android?

Я работаю над формой Xamarin, которая должна вызывать httpclient для использования внутреннего HTTPS REST API компании.

К сожалению, он возвращается с этой ошибкой

Javax.Net.Ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Как я могу это решить?


person DEN    schedule 14.06.2019    source источник


Ответы (1)


Чтобы обойти проверку сертификации, вы можете:

В параметрах сборки Android выберите

HttpClient Implementation: AndroidClientHandler
SSL/TLS implementation: Default (Native TLS 1.2+)

В MainActivity.cs добавьте это

ServicePointManager.ServerCertificateValidationCallback += (o, cert, chain, errors) => true;

В инициализации Httpclient измените это

var httpClient = new HttpClient();

To

var httpClient = new HttpClient(new System.Net.Http.HttpClientHandler());
person Bruno Caceiro    schedule 15.06.2019
comment
Привет, Бруно, я не могу найти вариант сборки Android. Доступно ли это в форме xamarin, Visual Studio 2017? - person DEN; 17.06.2019
comment
Да, это так. Щелкните правой кнопкой мыши решение для Android и параметры - person Bruno Caceiro; 17.06.2019
comment
Спасибо, Бруно, я смог найти его, щелкнув правой кнопкой мыши решение для Android ›› Свойства ›› Параметры Android ›› Дополнительно. Он отлично работает, реализовав ваше предложение. еще раз спасибо ! - person DEN; 17.06.2019
comment
Привет ДЕН, рад, что смог помочь! - person Bruno Caceiro; 17.06.2019
comment
Не оставляйте это в производственном коде! Он отключает проверку цепочки сертификатов и разрешает атаки «человек посередине». Для разработки это может быть удобно (используя Fiddler, чтобы увидеть, что происходит), но в производственной среде вы бы не хотели, чтобы третья сторона прослушивала ваш трафик. - person Louis Somers; 28.06.2021