繁体   English   中英

ios 上的离子自签名 https 证书异常

[英]Ionic- self-signed https certificate exception on ios

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

我们的开发环境版本如下:ionic version 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?

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM