마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android ssl 소켓통신에 대한 질문입니다.

0 추천

안녕하세요! 오랫만에 질문을 하러 오게 되었습니다!

좋은 불금 되시구요!

질문으로 들어가겠습니다!!

KeyStore keystore = KeyStore.getInstance("BKS");
keystore.load(getResources().openRawResource(R.raw.cert),keyPass);

tmf = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
trustManagers = tmf.getTrustManagers(); <<<<<<<<<<<<<<<<<<<<
tmf.init(keystore);

SSLContext context = SSLContext.getInstance("TLS");
context.init(null, trustManagers, null);
SSLSocketFactory sslsocketfactory = context.getSocketFactory();
Socket sslsocket = sslsocketfactory.createSocket(serverIP, serverPORT);

이러한 소스로 안드로이드와 python server를 통신하는 클라이언트를 만들고있는데요

(위 소스는 안드로이드(클라) 쪽 소스입니다.)

그냥 java로 프로그래밍 했을때는 정상 작동을해서 안드로이드로 옮겨와서

테스트를 해보는데 가운데쪽에 <<<< 되있는부분에서

java.lang.IllegalStateException: TrustManagerFactory is not initialized
at com.android.org.conscrypt.TrustManagerFactoryImpl.engineGetTrustManagers (TrustManagerFactoryImpl.java:77)

요러한 에러가 발생을 하더라구요ㅠㅠ 정말 슬프게도 말이죠.. 한번에 성공할줄알았는데..!!!

검색을 해보니 초기화가 되지않았다 라고 나오면서

이런 고통을 받은 분들이 많이(!?) 계셔서 거기있는 방법을 전부다 긁어와서 적용을 해보았지만...

역시나 실패를 하였기에.. 이렇게 고수분들이 계신 이곳에서

해답을 찾고자!!! 찾아오게 되었습니다.. 긴글읽어주셔서 감사합니다!

해답을 주신다면... 정말 더더욱 감사합니다..

좋은 불금과 좋은 주말되시고! 답변은.. 꼭! 헤헤 부탁드립니다 고수님들!

익명사용자 님이 2017년 8월 25일 질문
서버와 통신할 때 굳이 TLS 방식으로 해야 하는 건가요?
SSL는 크게 세팅할 필요가 없었던 것 같은데요..

TLS는 이슈가 좀 많은 것 같네요. 도움이 되길 바랍니다.
해보고 싶어도 환경 세팅하는데 시간적인 부담이...

https://github.com/square/okhttp/issues/2372

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...