使用自签名证书通过 HTTPS 进行 CORS 请求的 Phonegap 应用程序

Phonegap app with CORS request via HTTPS using self-signed certificate

我正在开发 PhoneGap 应用程序,它通过 AJAX 调用使用 Web 服务。使用自签名 SSL 证书的 HTTPS 上的服务 运行。我尝试以不同的方式编辑 config.xml,使用 cordova-plugin-whitelist v1.2.1

access origin="*"

allow-intent href="http://*/*"
allow-intent href="https://*/*"
allow-navigation href="http://*/*"
allow-navigation href="https://*/*"

经过这里的一些挖掘,我发现,在 PhoneGap 应用程序中使用自签名证书可能会导致 SSL 错误,当应用程序是 运行 时不会显示,导致无法执行 AJAX 调用(尽管在 Android 上,令人惊讶的是,一切正常,问题存在于 iOS 和 WP8/10 设备上)。我阅读了关于覆盖应用程序源中的 "onSSLError" 程序的信息,这样做使我的应用程序可以正常工作,但我必须将该应用程序上传到商店,这意味着我无法使用此解决方法。另一方面,我试图逃避颁发授权 SSL 证书的必要性,因为它需要成本。我决定在安装实际应用程序之前在测试设备上手动安装我的证书。我这样做了,但没有用 - 应用程序仍然没有网络连接,无法使用远程服务。

所以我的问题是,有没有人尝试过在 PhoneGap 应用程序中使用手动安装的自签名证书并且它真的有效吗?

经过 24 小时的探索,我终于确信,iPhone 和 WindowsPhone 设备拒绝自签名证书,即使它们是在应用程序安装之前安装的。只有 Android 允许使用未经验证的证书与 HTTPS AJAX 通信。
所以答案是:如果您正在构建 PhoneGap 应用程序并希望通过 AJAX,使用CA证书。