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

Posted

技术标签:

【中文标题】使用自签名证书通过 HTTPS 进行 CORS 请求的 Phonegap 应用程序【英文标题】:Phonegap app with CORS request via HTTPS using self-signed certificate 【发布时间】:2016-07-25 14:25:27 【问题描述】:

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

访问原点="*"

allow-intent href="http://*/*" 允许意图 href="https://*/*" 允许导航 href="http://*/*" 允许导航 href="https://*/*"

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

所以我的问题是,是否有人尝试将手动安装的自签名证书与 PhoneGap 应用程序一起使用,并且它真的有效吗?

【问题讨论】:

它也没有为我解决。 您可以使用letsencrypt免费获得您拥有的域的有效证书:letsencrypt.org/getting-started 【参考方案1】:

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

【讨论】:

以上是关于使用自签名证书通过 HTTPS 进行 CORS 请求的 Phonegap 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

https本地自签名证书添加到信任证书访问

在 android Nougat 中使用自签名证书通过 https 连接时出现 SSL 握手异常

通过Authentication Challenge来信任自签名Https证书

在Android Nougat中使用自签名证书通过https连接时的SSL握手异常

sh 笔记:OpenSSL生成「自签名」证书,配置Nodejs本地HTTPS服务 - 11.通过v3.ext对证书进行重新生成

从自签名证书到wireshark解密https