如何使用ionic 3应用程序(iOS和Android)绕过基于HTTPs的API中的证书验证?

时间:2018-11-27 05:44:04

标签: ionic-framework https ionic3 ssl-certificate ionic-http

我们正在开发基于离子框架的应用程序。在调用基于HTTP的API时,它可以正常工作,但是在访问基于HTTPs的API时,它会失败。

以下是详细信息:  -API在Java Apache服务器上运行,以验证某些域地址的证书  -请求出现错误: 否则,它最终会导致出现以下错误块(Angular / ionic httpclient):     错误状态:“ 0错误”

  

错误:主机名/ IP与证书的替代名称不匹配:“ IP:   XXX.XXX.XXX.XX不在证书列表中:“    在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)

试用:我们可以通过以下两种方式访问​​启用了HTTPS证书的相同API(但只能在本地计算机浏览器上,而不能在设备内部版本上

  • 如果以--disable-web-security模式运行chrome(在CORS插件中进行了更改)
  • 如果在hosts文件中将ipaddress分配给.companyname.com域。然后它已通过证书验证并能够运行该应用程序。

由于这两种方法都可以在台式机上完成,因此不确定如何在移动应用程序端使用这种绕过机制。

即使它要求用户允许绕过证书,那么对我们来说也应该可以。但是它应该连接到API并获取数据。

试用版:

  • .Net控制台应用程序:在控制台应用程序中使用HttpWebRequest进行相同的API调用,由于代码Code

    而正常工作

    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应用:代码here

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

我尝试调用http.setSSLPinning方法,但这也不起作用。

如何克服使用离子框架构建的移动应用程序的错误,或者如何启用HTTPs SSL固定?

0 个答案:

没有答案