如何在ionic中为https请求添加android ssl证书?

Posted

技术标签:

【中文标题】如何在ionic中为https请求添加android ssl证书?【英文标题】:How add android ssl certificate for https request in ionic? 【发布时间】:2016-10-20 06:52:28 【问题描述】:

在 ionic 模拟器中,所有 http 和 https 都可以正常工作,但在真实设备发布版本中,它会停止工作。

很多人建议为发布版本添加 SSL 证书,但我不知道如何添加?

我已经尝试了所有这些来发出 https 请求?

<access origin="*"/>
<access origin="*"/>
<allow-navigation href="*"/>
<allow-intent href="*" />

还添加了白名单插件,但不起作用。

也试过了,但没用

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

【问题讨论】:

请参考这个thomasmaximini.com/2015/01/23/… 我不想使用人行横道。有什么方法可以添加 ssl 证书或发出 https 请求? 那你应该使用http拦截器 您要做的是在您的服务器上使用适当的受信任证书,而不是在您的应用程序上。您可以让用户从应用程序安装您的错误证书,但在 android 4.4 及更高版本上,他们将始终在设备上收到安全警告 但在我的情况下,我们使用的是受信任的证书,但仍然给我状态码 = -1 用于 https 请求 【参考方案1】:

是的,这是所有开发人员提出的最常见的问题。最后我找到了答案,就是这里。。

SSL 证书足以让网站通过 HTTPS 进行连接,但对于基于 ionic 构建的 App 等混合应用程序,SSL 本身是不够的,您需要一个代码签名证书,它的成本为几百美元。..

另一种选择是使用您可以免费创建的自签名证书,在这里您也可以通过 HTTPS 连接到 ionic Web 版本,但在编译后,apk 文件会停止连接到数据库服务器。..

这是您可以使用自签名认证在服务中添加 HTTPS 端口或 HTTP api 链接的技巧..

完全按照命令:

离子服务 离子构建 离子构建 --prod cordova 平台添加 android

之后,停止编译,放松一下..现在你会发现一个名为platform的文件夹,路径如下 项目/平台/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java

按原样进行以下修改

public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) 
  final String packageName = this.cordova.getActivity().getPackageName();
  final PackageManager pm = this.cordova.getActivity().getPackageManager();

  ApplicationInfo appInfo;
  try 
    appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
    if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) 
      // debug = true
      handler.proceed();
      return;
     else 
      // debug = false
      // THIS IS WHAT YOU NEED TO CHANGE:
      // 1. COMMENT THIS LINE
      // super.onReceivedSslError(view, handler, error);
      // 2. ADD THESE TWO LINES
      // ---->
      handler.proceed();
      return;
      // <----
    
   catch (NameNotFoundException e) 
    // When it doubt, lock it out!
    super.onReceivedSslError(view, handler, error);
  

最后

cordova build --release android

在此之后,常用的命令 jarsiner 和 zipalign

您的 apk 应该使用您的自签名证书在 SSL 的 HTTPS 端口中运行..

【讨论】:

嗯,这不是一个解决方案,而是一种解决方法。您只是完全禁用了对证书信任的任何验证,因此实际上您将自己暴露在中间人类型的攻击中。我想要的是一种只信任设备上的我的自签名证书而不信任任何证书的方法。

以上是关于如何在ionic中为https请求添加android ssl证书?的主要内容,如果未能解决你的问题,请参考以下文章

如何在IONIC 3中为intl-tel-input创建IONIC组件

Angular 6 - Ionic - 使用拦截器中断 http 请求并返回 json

我如何在IONIC 4中为我的所有页面设置一个通用的页眉组件?

如何在前置脚本请求中为邮递员请求添加请求参数

如何在 Ionic 框架中为加油站和美食广场创建自定义图标

如何在 Ionic 移动应用程序中为 $cordova 本地通知的本地图像设置图标?