【问题标题】:Ionic- self-signed https certificate exception on iosios上的Ionic-自签名https证书异常
【发布时间】:2018-12-04 20:36:36
【问题描述】:

我们正在 ionic 中开发一个混合移动应用程序,以从服务器获取数据并将其显示在应用程序中。 我们有一个自签名证书来查询我们的服务器。我们已将 .cer 文件放在 xcode project->target for iOS 中。 它对使用证书的 https 查询给出了例外。

我们的开发环境版本如下: 离子版本 3.20.0

我们正在为 http 使用以下插件。 https://ionicframework.com/docs/native/http/

离子代码如下

let head = {
      'Access-Control-Allow-Origin' : '*',
      'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
      'Accept':'application/json',
      'content-type':'application/json'
    }


this.http.enableSSLPinning(true).then(data =>{
  console.log("SSL success");
 })
 .catch(error =>{
   console.log("SSL error");
 });
 this.http.acceptAllCerts(true);
 this.http.setDataSerializer("json");
    this.http.post(this.getProfileURL, requestData, head)
  .then(data => {
console.log("success");
  resolve(JSON.parse(data.data));
  })
  .catch(error => {
   reject(error.error);

  });
});

此代码适用于 Android,不适用于 iOS 它给出以下错误: * 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'* -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

问题: 1、证书的位置是否正确? (我们已将 .cer 文件放在 xcode project->target for iOS 中。) 2. 我们应该使用哪种证书类型 - .cer、.der、.pem? 3. 如何解决 NSInvalidArgumentException?

对此的任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 我可以通过以下步骤解决这个问题: 1. 将 .der 文件放在位置 - 项目 -> 目标或 www/certificates 2. 在您的 iOS swift 代码中,转到文件 AFSecurityPolicy.m在方法certificatesInBundle中,并将捆绑路径ForResourcesOfType:@“cer”更改为捆绑路径ForResourcesOfType:@“der”
  • 我们在 iOS 和 Android 上都面临着类似的问题,请您帮忙。它给出证书错误。这是我的代码: import { HttpClient, HttpHeaders } from '@angular/common/http';从 '@ionic-native/http' 导入 { HTTP, HTTPResponse };构造函数(私有_mHTTP:HTTP){} this._mHTTP.get(路径,{},标题).then((d)=> {让t:T = this.convertReturn(d.data);返回t ; }) 当前获取错误代码:0

标签: ios ionic-framework https ssl-certificate afnetworking


【解决方案1】:

我遇到了这个问题,我的问题是证书的格式。 最初格式是 PEM,在 iOS 中您需要使用 DER 格式。

如果是这种情况,您可以使用以下open_ssl 命令轻松转换您的证书:

openssl x509 -outform der -in myCertificate.cer -out myFormattedCertificate.cer

提示:如果您在文本编辑器(例如 Sublime Text)中打开证书,则可以轻松检查您的证书是否为 PEM 格式。您会看到以这样的开头:“-----BEGIN CERTIFICATE-----”

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 2014-08-08
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2014-06-22
    • 2017-03-15
    相关资源
    最近更新 更多