2017-02-07 12 views
0

2017年3月1日から、Google PlayはHostnameVerifierの安全でない実装を使用する新しい アプリまたはアップデートの公開をブロックします。 公開されたAPKのバージョンは影響を受けませんが、この脆弱性に対処しない限り、アプリへのアップデート はブロックされます。Android版Googleアプリからのセキュリティ警告

アクションは、サーバのホスト名 はあなたの期待を満たしていないときは常に正しく、ホスト名の検証を処理falseを返すように カスタムのHostnameVerifierインタフェースの検証方法を変更するには

を必要としていました。

これは私のアプリの1つのGoogle Playストアから受け取ったメッセージです。

この問題を解決するにはどうすればよいですか?

+2

何がそこに記載されていることをやめさせるのですか? – WarrenFaith

+0

@WarrenFaith私たちはapacheライブラリを使っていくつかのWebサービスコールを行っています。 –

+1

他のライブラリを使う必要があると思います。 OkHttpは良いものになるでしょう。 – WarrenFaith

答えて

1

OkHttpに分岐して切り替えます。あなたは長い夜を過ごしています。

0

試す接続が確立する前にこのメソッドを呼び出します。

@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) { 
      } 
     } 
関連する問題