项目上线GooglePlay存在证书漏洞,导致杯具

来源:互联网 发布:linux dhcp安装 编辑:程序博客网 时间:2024/05/24 06:02

要写这篇文章已经好久了,一直没得空。

前段时间接受一项目(大致是6月下旬),是关于android6.0对应及一些新功能。 当时想着这应该很简单,对于去年已经发布的6.0,此时已经有很多手机都能升级6.0的操作系统,那么对应6.0的新特性应该是很简单的,可没想到差点愁死我,废话有点多了~~


首先在2016/5/17召开的google大会规定,app存在证书安全漏洞不能够在GooglePlay上发布,也是这个原因导致我浪费了很多时间

以下是被拒的提示信息:




APP被拒的提示信息:


此后在网上搜了很多种方法:

1、Vitamio的解决方案:

当时用的是vitamio4.0,官方提示直接升级到5.0.2 来解决X509证书漏洞问题;


2、X509TrusterManger 解决方案:

首先,改漏洞在网上有很多资料,大致方法都一样,在checkServerTrusted()方法中做以下处理:

@Override            public void checkServerTrusted(X509Certificate[] chain,            String authType) throws CertificateException {            if (null == chain || 0 == chain.length) {throw new IllegalArgumentException("parameter is not used");} else if(null == authType || 0 == authType.length()){throw new IllegalArgumentException("parameter is not used");}try {// if the certificate chain is not trusted by this TrustManager.                     chain[0].checkValidity();                 } catch (Exception e) {                    throw new CertificateException("Certificate not valid or trusted.");                 }            }


总之就是当证书存在漏洞或者不可用是,捕捉异常。项目中有5处用到这个方法,都改完之后还是不行,还是报错,卡在这里很久

最后发现baidusdk中存在证书漏洞,在国外用的app,所以直接删掉baidusdk(项目用了两套地图,还有一套是googlemap),这样这个漏洞就算过了。也可以升级baidusdk到最新版。


3、onReceivedSslError证书漏洞

 @Override            public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {            /* if (BuildConfig.DEBUG) {                     handler.proceed();                 } else {                     handler.cancel();                 }*/            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());                builder.setMessage("ssl証明書が正しくないページですが開いてもいいですか");                builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        handler.proceed();                    }                });                builder.setNegativeButton("no", new DialogInterface.OnClickListener() {                    @Override                    public void onClick(DialogInterface dialog, int which) {                        handler.cancel();                    }                });                builder.setOnKeyListener(new DialogInterface.OnKeyListener() {                    @Override                    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {                        if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {                            handler.cancel();                            dialog.dismiss();                            return true;                        }                        return false;                    }                });                AlertDialog dialog = builder.create();                dialog.show();            }
弹出一个dialog,这样修改之后还是被拒,同样被卡在这里很久


最终的解决方法,推荐方法

直接联系  GooglePlay开发人员支援小组

他们通过分析代码,直接定位漏洞存在代码的哪些地方,通过定位能够快速找到漏洞,支援小组反馈邮件如下:



因为只剩余一个证书漏洞,所以反馈的只有CustomWebView这个漏洞。

由于快速定位问题所在,所以耽搁很久的问题一下子解决了,所以建议大家解决不了直接联系技术支持小组。

以下是联系链接:

https://support.google.com/googleplay/android-developer/?hl=zh-Hant#topic=3450769

你也可以直接和支援小组对话。




















0 0