Android X509TrustManager应用拒绝google play

时间:2016-06-03 18:28:10

标签: android ssl x509certificate

应用程序运行正常,同时在Google Play Consol

中上传错误以下的应用程序
  

漏洞TrustManager   要正确处理SSL证书验证,请在自定义X509TrustManager接口的checkServerTrusted方法中更改代码,以便在服务器提供的证书不符合您的期望时引发CertificateException或IllegalArgumentException。要确认您已正确更新,请将更新后的版本提交给开发者控制台,并在五小时后再回来查看。如果应用尚未正确升级,我们将显示警告。   有关其他信息和后续步骤,请参阅此Google帮助中心文章。

我使用了以下API调用代码

    DefaultHttpClient client=null;
    try {
        SchemeRegistry schemeRegistry = new SchemeRegistry();
        // http scheme
        schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        // https scheme
        schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));

        HttpParams mHttpParams = new BasicHttpParams();
        mHttpParams.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
        mHttpParams.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30));
        mHttpParams.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
        HttpProtocolParams.setVersion(mHttpParams, HttpVersion.HTTP_1_1);
        ClientConnectionManager cm = new ThreadSafeClientConnManager(mHttpParams, schemeRegistry);
        client = new DefaultHttpClient(cm, mHttpParams);
    } catch (Exception e) {
        e.printStackTrace();
        client = new DefaultHttpClient();
    }

我的网址是基于HTTP的IP

我在下面用过X509TrustManager x509trustmanager-from-google trusting-all-certificates-using-httpclient

2 个答案:

答案 0 :(得分:3)

这是一个警告说,您使用不安全的X509TrustManagercheckClientTrusted()checkServerTrusted()方法。这些方法假设将客户端和服务器证书作为HTTPS合同的一部分进行检查,并在给定证书无效时抛出异常。通过将这些方法保持为空,您可以打破整个HTTPS安全性,因为您的代码将接受任何证书。例如,您的应用易受a man in the middle attack攻击。这种空实现几乎与普通的HTTP实现相同。

使用SSLSocketFactory.getSocketFactory()代替new EasySSLSocketFactory()可以解决问题。您的应用连接的服务器必须具有有效的CA签名证书。

答案 1 :(得分:0)

最后问题是由于ACRA lib我删除了ACRA&慌张
在谷歌播放上成功上传应用 Answer