Как обойти проверку сертификата в API на основе HTTP с помощью приложения ionic 3 (iOS и Android)? - PullRequest
0 голосов
/ 27 ноября 2018

Мы разрабатываем приложение на основе ионных каркасов.При вызове API на основе HTTP он работает правильно, но при доступе к API на основе HTTP происходит сбой.

Вот подробности: - API работают на сервере Java Apache, проверяя сертификат для определенных адресов домена - Произошла ошибка с запросом: в противном случае он заканчивается блоком ошибок (Angular / ionic httpclient) с: err.Status: «0 ошибка» или

Ошибка: имя хоста / IP не совпадает с альтернативными именами сертификата: «IP: XXX.XXX.XXX.XX отсутствует всписок сертификата: "at Object.checkServerIdentity (tls.js: 199: 17) в TLSSocket.(_tls_wrap.js: 1098: 29) в emitNone (events.js: 86: 13) в TLSSocket.emit (events.js: 185: 7) в TLSSocket._finishInit (_tls_wrap.js: 610: 8) в TLSWrap.ssl.onhandshakedone (_tls_wrap.js: 440: 38)

Испытания. Мы можем получить доступ к одним и тем же API-интерфейсам с поддержкой HTTPS-сертификатов двумя способами (но только в браузере локальной машины, а не в сборках устройств)

  • Если запущен Chrome в режиме --disable-web-security (изменение в плагине CORS)
  • Если назначить ipaddress домену .companyname.com в файле hosts.Затем он был подтвержден сертификатом и может запускать приложение.

Поскольку эти два подхода могут быть реализованы на настольном компьютере, и мы не уверены, как мы можем использовать такой механизм обхода на стороне мобильного приложения.

Даже если он запрашивает у пользователя разрешение на обход сертификата, он также должен быть у нас в порядке.Но он должен подключаться к API и получать данные.

Испытания:

  • .Net Console App: тот же APIвызовите с помощью HttpWebRequest в консольном приложении, которое работает правильно из-за кода: Код

    private static bool AcceptAllCertifications(object sender,System.Security.Cryptography.X509Certificates.X509Certificate certification,System.Security.Cryptography.X509Certificates.X509Chain chain,System.Net.Security.SslPolicyErrors sslPolicyErrors) { return true; }

  • Приложение iOS Objective-C для iOS: Код здесь

NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"myCompany" ofType:@"cer"]; NSData *myCertData = [NSData dataWithContentsOfFile:cerPath];

Я пытался вызвать метод http.setSSLPinning, но он тоже не работает.

Как преодолеть эту ошибку при сборке мобильных приложений с использованием ionic framework или как включить HTTP-закрепление SSL?

...