WebViewでhttpsのサイトにアクセスした際に証明書チェックがエラーになっても無理やり表示する


はじめに

仕事の中でSSLサーバの証明書の有効期限が切れているページを表示せざるを得ない場面があった時にハマったのでメモを残しておきます。
通常、WebViewで証明書の期限切れ等でエラーになった場合、真っ白な画面が表示されます。
ちなみに、不審なページで証明書のチェックをスキップするというのはセキュリティーホールになりかねないので非推奨です。

実装

WebViewにsetWebViewClientするときにonReceivedSslError()をオーバーライドし
その中で、handler.proceed()するだけです。


//前略

mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {  
            handler.proceed();  
        }  
    } 

//後略 

おわりに

自分の場合は証明書が期限切れなのはあくまでも開発中の検証環境の話であり、リリースの際にはちゃんとしたhttpsでの接続が保証されているので本番のソースにはこの実装は入れません。
はじめにも書きましたが、脆弱性を生み出す原因なので気をつけましょう。