Hyun Chul's Utopia

Android WebView에서 SSL인증을 제대로 수행 못할때 CertPathValidatorException 본문

프로그래밍/Android

Android WebView에서 SSL인증을 제대로 수행 못할때 CertPathValidatorException

디프시다루핀 2015. 3. 11. 10:05

I/X509Util﹕ Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.


이런 에러가 뜬다..

이번에 겪은 경우는 WebView에서 접속하는 URL이 SSL인증을 타는 부분이었다.

구글쪽에 정리된 문서상에서는 적절한 해결법을 찾지는 못했으나... 관련 내용이 있긴 한것 같다.

http://developer.android.com/training/articles/security-ssl.html


무튼 WebView상에서 해당 문제를 해결하는 방버을 구글링 해본 결과..

신뢰할 수 없는 인증서의 경우 Error을 뿜지만.. 그 타이밍에 Error를 무시하고 강제접속 시키는 방법은 가능하다.


https://github.com/oauth-io/oauth-android/issues/2

위의 링크를 참조하자.


위의 링크를 가면 알겠지만 코드는 매우 간결하다..


webView.setWebViewClient(new WebViewClient() {

    @Override

    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){

        handler.proceed();

    }

});


단 위의 코드에서 super() 를 그대로 실행 시켜주면

W/chromium﹕ [WARNING:aw_contents_client_bridge.cc(83)] Ignoring unexpected ssl error proceed callback

이러한 에러를 뿜으며 강제접속을 하지 않는다..


반듯이 super()는 지워줘야 한다.



위에서 설명한 부분은 이제 사용하면 안되게 되었습니다.

이를 이용하여 강제로 HTTPS인증을 무시하도록 코드를 작성하여 플레이스토어에 앱을 개제하면 구글로 부터 경고를 받습니다. 그리고 심할 경우 앱을 내린다는 협박(?) 까지 받을 수 있습니다.


뚜렷한 대안은 저도 아직 잘 모르겠습니다.

다만.. HTTPS인증을 정상적으로 수행하도록 인증서 갱신 등의 작업을 하는것이 방법인것 같습니다.


실제로 저 코드를 적용하여 서비스를 하던 도중 경고 메일을 받고... 해당 코드를 제거하였습니다.

혹시라도 아직도 저 코드를 사용중인 분이 계시다면 반드시 제거하고 정상적인 인증 로직을 구현하시기 바랍니다.


설명이 부실해서 죄송합니다.. ㅜㅠ

Comments