先日報告があったため修正した、Android アプリの不具合です。
WebView のページを開いたところ、何も表示されず真っ白なページになってしまいました。
で、Android Studio で表示されたエラーメッセージは、タイトルにもある通り「Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.」というもので、「証明書チェーンの検証に失敗しました」とのこと。
このエラーは証明書の設定が間違っていることが考えられるので、一度証明書の設定を確認してください。
ですが、テスト用の証明書だったりするなど、直すのが難しいことがあるかと思います。
そんな時には、強制的にエラーをスキップする方法があります。
参考にしたサイトはこちらから。
Y.A.M の 雑記帳: Android WebView で https のサイトにアクセスして白画面になるのを避ける方法
http://y-anz-m.blogspot.com/2012/08/androidwebview-https.htmlssl – Android error in webview.loadUrl() – Trust anchor for certification path not found – Stack Overflow
https://stackoverflow.com/questions/33825696/android-error-in-webview-loadurl-trust-anchor-for-certification-path-not-fou
ただし、セキュリティ上は問題があるので、なるべく使わないほうがいいです。
あくまでも、緊急時の対処法ということにしておいてください。
対応方法ですが、WebViewClient を継承しているクラスがあると思うので、そこに下記のコードを記述します。
@Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError er) { handler.proceed(); }
上記を指定すると、SSL でエラーが発生しても無視をしてくれますので、問題のあるWebページでも問題なく表示されます。
以上、Android の WebView で SSL 証明書にエラーがある Web ページを表示する方法でした。
ただし、再度繰り返しますが、あくまでも応急処置ですので、リリースするアプリには導入しないことをお勧めします。