javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb7a8aa38: Failure in SSL library, usually a protocol error
error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol (external/openssl/ssl/s23_clnt.c:714 0xa8f6e6e2:0x00000000)

 

안드로이드에서 api20 미만에서 발생하는 오류이고 젤리빈 에뮬레이터에서 발생했다.

안드로이드 20미만에서는 TLSv1 SSLv3만 지원을 하는데 서버 프로토콜이 이를 지원하지 않으면 발생한다

api20미만에서도 구글 플레이 서비스를 이용해 해결할 수 있지만 예전 에뮬레이터에선 구글 플레이가 지원이 안되어서 해결을 못하였다.

 

try {
          ProviderInstaller.installIfNeeded(getContext());
        } catch (GooglePlayServicesRepairableException e) {

          // Indicates that Google Play services is out of date, disabled, etc.

          // Prompt the user to install/update/enable Google Play services.
          GoogleApiAvailability.getInstance()
                  .showErrorNotification(context, e.connectionStatusCode)

          // Notify the SyncManager that a soft error occurred.
          syncResult.stats.numIoExceptions++;
          return;

        } catch (GooglePlayServicesNotAvailableException e) {
          // Indicates a non-recoverable error; the ProviderInstaller is not able
          // to install an up-to-date Provider.

          // Notify the SyncManager that a hard error occurred.
          syncResult.stats.numAuthExceptions++;
          return;
        }

아래 라이브러리를 추가해 주어야 한다.

implementation 'com.google.android.gms:play-services-auth:17.0.0'

요즘은 minsdk를 안드로이드6.0으로 설정하는 추세인거 같은데 그렇다면 발생할 일이 없겠지만 혹시 몰라서 올린다.

 

https://developer.android.com/training/articles/security-gms-provider#java

 

보안 프로바이더를 업데이트하여 SSL 악용으로부터 기기 보호  |  Android 개발자  |  Android Develope

보안 프로바이더를 업데이트하여 SSL 악용으로부터 기기 보호 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android에서는 보안 네트워크 통신을 제공하기

developer.android.com

 

https://stackoverflow.com/questions/29916962/javax-net-ssl-sslhandshakeexception-javax-net-ssl-sslprotocolexception-ssl-han

블로그 이미지

dev김

안드로이드 개발자로 만 4년이 좀 안되게 근무했었고 그 이상의 공백을 가지고 있다. 다시 현업에 복귀하기 위한 노력의 흔적을 담으려고 한다.

,