2016-02-23 13 views
8

Mam Oznaczono jeden problem na Playstore i google wyślij wiadomość, moja aplikacja jest niebezpieczna, ponieważ używa SSL.Jak załadować adres URL https bez użycia ssl w przeglądarce internetowej?

Obecnie w mojej aplikacji mam jeden webview który jest linkiem ładowania i zawiera adres URL https.

ustawień internetowych robię tak:

web.setWebViewClient(new SSLTolerentWebViewClient());

ignorować certyfikat SSL używam następujący kod, ale z powodu ignorowania certyfikat playstore pokazując moja aplikacja jest niebezpieczna

private class SSLTolerentWebViewClient extends WebViewClient { 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
     handler.proceed(); // Ignore SSL certificate errors 
    } 
} 

Can ktoś sugeruje mi, jak mogę to zrobić, aby mój WebView mógł obsługiwać adres URL https, a Playstore nie oznaczył mojej aplikacji jako niebezpieczną?

+1

Dlaczego musisz ignorować błędy certyfikatu SSL? – Bhargav

+0

Jeśli nie ignorujemy, a nie ładujemy strony internetowej, używam tego, ale teraz playstore pokazuje ostrzeżenie, że mogą odrzucić aplikację w przyszłości. –

+0

To źle, musisz dowiedzieć się, jakie błędy ssl uzyskujesz i naprawiać, ponieważ strona https MUSI komunikować się przez ssl, a do tego, aby zdarzył się certyfikat ssl jest bardzo ważny – Bhargav

Odpowiedz

24

To Solve Google Play Warning: WebViewClient.onReceivedSslError handler

Nie zawsze zmuszać handler.proceed(); ale musisz również dołączyć handler.cancel(); aby użytkownik mógł uniknąć załadowania treści unsaif.

obchodzić niebezpieczny realizację obsługi WebViewClient.onReceivedSslError

użyć następującego kodu

webView.setWebViewClient(new SSLTolerentWebViewClient()); 
webView.loadUrl(myhttps url); 

i

private class SSLTolerentWebViewClient extends WebViewClient { 
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(Tab1Activity.this); 
     AlertDialog alertDialog = builder.create(); 
     String message = "SSL Certificate error."; 
     switch (error.getPrimaryError()) { 
      case SslError.SSL_UNTRUSTED: 
       message = "The certificate authority is not trusted."; 
       break; 
      case SslError.SSL_EXPIRED: 
       message = "The certificate has expired."; 
       break; 
      case SslError.SSL_IDMISMATCH: 
       message = "The certificate Hostname mismatch."; 
       break; 
      case SslError.SSL_NOTYETVALID: 
       message = "The certificate is not yet valid."; 
       break; 
     } 

     message += " Do you want to continue anyway?"; 
     alertDialog.setTitle("SSL Certificate Error"); 
     alertDialog.setMessage(message); 
     alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // Ignore SSL certificate errors 
       handler.proceed(); 
      } 
     }); 

     alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 

       handler.cancel(); 
      } 
     }); 
     alertDialog.show(); 
    } 
} 
+1

handler.proceed(); załatwił sprawę. Pracował dla mnie. – TharakaNirmana

+0

Naprawdę powinniśmy zobaczyć w Internecie odpowiedź na nasz certyfikat i dodać go do zaufanego magazynu kluczy. Powinien unikać ataków typu "man-in-the-middle" na tego typu luki. – Alex

+0

Kudos do nazwy "SSLTolerent" lol .. działa jak urok –

-3

Przymierz łączącej do strony internetowej http zamiast https. Prawdopodobnie przekieruje to do strony https. Nie musisz kodować, aby zignorować certyfikat bezpieczeństwa.

+0

tak próbowałem, ale to pokazuje puste, jeśli próbuję usunąć s z https nie ładowanie prawidłowo. –

+0

Co stanie się, jeśli spróbujesz załadować aplikację poza aplikacją? tj. usuń WebView myWebView = (WebView) findViewById (R.id.webview); myWebView.setWebViewClient (nowy WebViewClient()); ze swojej aktywności lub własnego kodu klienta przeglądarki internetowej, jeśli taki posiadasz. –

+0

Tak, nie ma problemu z ładowaniem przy użyciu klienta przeglądarki lub widoku Chrome, ale chcę tylko na ekranie aplikacji, dlatego –