IOS 上的自签名 https 证书异常



我们正在开发一个Ionic的混合移动应用程序,用于从服务器获取数据并将其显示在应用程序中。 我们有一个自签名证书来查询我们的服务器。我们已将.cer文件放置在 iOS 的 xcode project->target 中。 它为使用该证书的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:]:对象不能为零">

问题: 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格式。您将看到它以这样的内容开头:"-----开始证书-----">

最新更新