如何解决“ Google Play将阻止发布使用不安全实施HostnameVerifier的任何新应用或更新”?

问题描述 投票:0回答:2

[自2017年3月1日开始,Google Play将禁止发布使用不安全实施HostnameVerifier的任何新应用或更新。您发布的APK版本将保持不变,但是除非您解决此漏洞,否则该应用程序的任何更新都将被阻止。

需要采取的措施

为了正确处理主机名验证,请在服务器的主机名不符合您的期望时,在自定义HostnameVerifier界面中更改verify方法,以返回false。

这是我从Google Play商店收到的有关我的一个应用的消息。

如何解决此问题?

android ssl hostname
2个回答
1
投票

分支并切换到OkHttp。漫漫长夜,您的脑袋。


1
投票

如消息中所述,在verify()类内的HostnameVerifier方法上,仅返回true作为您的应用程序信任的主机名。

尝试一下。在建立连接之前调用此方法。

  @SuppressLint("TrulyRandom")
        public static void handleSSLHandshake() {
            try {
                TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
                    public X509Certificate[] getAcceptedIssuers() {
                        return new X509Certificate[0];
                    }

                    @Override
                    public void checkClientTrusted(X509Certificate[] certs, String authType) {
                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] certs, String authType) {
                    }
                }};

                SSLContext sc = SSLContext.getInstance("SSL");
                sc.init(null, trustAllCerts, new SecureRandom());
                HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
                HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
                    @Override
                    public boolean verify(String arg0, SSLSession arg1) {

                        if(arg0.equalsIgnoreCase("google.com") || arg0.equalsIgnoreCase("firebasedynamiclinks.googleapis.com")||
                                arg0.equalsIgnoreCase("youtube.com")){
                            return true;
                        }else {
                            return false;
                        }
                    }
                });
            } catch (Exception ignored) {
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.