我们正在开发基于离子框架的应用程序。在调用基于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(但只能在本地计算机浏览器上,而不能在设备内部版本上
由于这两种方法都可以在台式机上完成,因此不确定如何在移动应用程序端使用这种绕过机制。
即使它要求用户允许绕过证书,那么对我们来说也应该可以。但是它应该连接到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固定?