web-dev-qa-db-ja.com

WebviewHTTPSハンドシェイクが失敗しました

AndroidアプリケーションとWebViewライブラリからWebサイトにアクセスしようとしているので、次のようになります。

import Android.support.v7.app.AppCompatActivity;
import Android.os.Bundle;
import Android.webkit.SslErrorHandler;
import Android.webkit.WebSettings;
import Android.webkit.WebView;
import Android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setUseWideViewPort(true);
        webSettings.setLoadWithOverviewMode(true);
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        myWebView.setWebViewClient(
                new SSLTolerentWebViewClient()
        );
        myWebView.loadUrl("https://www.mywebsite.ro");
    }
}
class SSLTolerentWebViewClient extends WebViewClient {
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        if (error.toString() == "piglet")
            handler.cancel();
        else
            handler.proceed(); // Ignore SSL certificate errors
    }
}

デバッグでは:

D/OpenSSLLib:OpensslErr:Module:20(119:258); file:external/openssl/ssl/s23_clnt.c; Line:714; Function:ssl23_get_server_hello

W /クロム:external/chromium/net/socket/ssl_client_socket_openssl.cc:171 [0209/105028:WARNING:ssl_client_socket_openssl.cc(171)]マップされていないエラーの理由:258

E /クロム:external/chromium/net/socket/ssl_client_socket_openssl.cc:792 [0209/105028:ERROR:ssl_client_socket_openssl.cc(792)]ハンドシェイクに失敗しました。 -1、SSLエラーコード1、net_error-2を返しました

D/chromium/tcp:LogConnectCompletion with error:-2

D/WebRequest:リクエストエラー:-2

D /クロム:不明なクロムエラー:-2

V/webview:setCertificate = null

V/webcore:setupViewport mRestoredScale = 0.0 mViewScale = 2.0 mTextWrapScale = 2.0 data.mScale = 2.0

V/webcore:viewSizeChanged w = 360; h = 559; textwrapWidth = 360;スケール= 2.0

D/skia:フラグは10ではありません

7
Oana Andone

アプリをPlayストアにアップロードしない場合は、SSL証明書エラーを無視できます。

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.proceed(); // Ignore SSL certificate errors
}
7
Paul Chu

この問題は、4.4未満のAndroidバージョンは、ほとんどすべてのサイトがこれらのバージョンを使用する新しいバージョンTLS 1.1、TLS1.2をサポートしていないためです。

これがAndroidバージョンとTLSのサポートのリストです。 enter image description here

5
Oana Andone