728x90
반응형
구버전 안드로이드OS(4.4 Kitkat)에서 TLS쪽 문제가 발생했다.
4.4 버전에서는 TLS 1.1까지를 지원한다고 되어있었다. 문제는 나는 TLS 1.2와 통신을 해야한다.
TLS(Transport Layer Security)란?
SSL(Secure Socket Layer)의 표준화된 단어 라고 생각하면 된다. SSL 3.0부터 표준화가 되어 SSL3.0 = TLS1.0 이라고 생각하면 편하다.
HTTP통신은 별도의 인증없이 서로간 프로토콜만 맞으면 통신이 가능하지만 HTTPS부터는 서로간의 인증서가 맞아야 통신이 가능하다.
통신을 하며 메시지를 주고 받는 과정을 Handshake라고 하는데 인증서가 맞지 않는 경우 SSL Handshake 에러가 발생한다.
요즘 나오는 대부분의 서버는 기본값이 TLS 1.2이상으로 되어있다.
어지간하면 OS버전을 올리는게 정말 최선책이지만 정말 부득이하게 사용해야한다면 보안이슈가 조금 있을 수 있어도 아래 코드를 적용하면 가능하긴하다.
안드로이드 공식 홈페이지에서 가이드해주는 내용이다.(https://developer.android.com/training/articles/security-gms-provider)
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;
}
사용하기 위해서는 app단위 build.gradle에서 다음 코드를 추가한다.
implementation('com.google.android.gms:play-services-basement:18.0.0')
728x90
반응형
'JAVA > android' 카테고리의 다른 글
view binding (0) | 2022.08.22 |
---|---|
kotlin모르는 상태에서 좀 해보려고 popcat 어플 만든 썰 푼다. (2) | 2022.06.25 |