7

我们目前正在使用 Cordova/PhoneGap(最新版本)为 Android 和 iOS 开发一个移动应用程序。我们应用程序的关键方面之一是它从不同的远程源(其中一个具有无效的 SSL 证书)检索数据。在确保正确设置了所有 .plist 设置(对于域白名单)之后,我们的应用程序在 iOS 5 和 6 下都无法运行。XCode 或 Safari 的控制台中没有显示错误——它只是死了。Android 应用程序运行良好,也可以在 Web 浏览器中本地运行。所以,几个问题:

是否有用于忽略 iOS 中无效 SSL 证书的 .plist 设置?我在 UIWebView 中看到了一些执行此操作的代码,但我们不确定是否应该修改该代码并冒着在其他地方破坏应用程序的风险。

4

1 回答 1

8

** 2014 年 3 月 13 日编辑**

推荐的方法是在您的设备中安装您的 CA:通过电子邮件将您的 CA 发送到您的设备,点击电子邮件中的 CA 文件,然后将其导入您的安全存储区域。这将允许您的设备信任未签名的 https 连接,而无需下面显示的代码行。

请注意,虽然下面的解决方案可行,但它不安全且不推荐。在发布应用程序的生产版本之前,您必须删除这些代码行。否则将导致应用程序不安全。不建议使用此解决方案,因为人们可能忘记删除它。

**原始答案**

没有为此设置cordova plist。要在 iOS 中解决此问题,请将下面看到的代码附加到 AppDelegate.m 文件的末尾。

@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
    return YES;
}
@end

我过去在几个项目中使用过它,没有看到任何不良副作用。

AppDelegate.m 文件可以在 Xcode 项目中标题为 Classes 的黄色文件夹中找到。

于 2013-03-17T23:12:56.787 回答