Android [ Java, Kotlin ]

안드로이드 Retrofit2 통신 시 HTTPS가 아닌 HTTP로 설정하기

Moonsu99 2023. 10. 19. 10:22

안드로이드에서 Retrofit2으로 서버와 통신할 때 요구되는 방식은 HTTPS다.

프로토콜은 HTTP와 HTTPS가 존재하는데 두 프로토콜의 차이점은 보안성과 데이터 무결성의 차이에 있다.

 

  HTTP HTTPS
보안 제공 X 제공 O
암호화 평문전송 SSL/TLS 사용
포트 80 443

요약하자면, HTTP는 보안 기능이 없고 데이터를 암호화하지 않지만, HTTPS는 데이터 보안과 무결성을 제공하므로 민감한 정보를 안전하게 전송하는 데 사용된다. 웹에서는 HTTPS를 사용하는 것이 권장되며, 많은 웹사이트가 HTTPS를 통해 데이터 보안을 강화하고 있다.

 

하지만, 불가피하게 HTTP로 통신해야 할때는

xml - network_security_config.xml 파일을 생성하여 HTTP 연결 권한을 허용한다.

 

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

 

 

해당 파일을 추가한 후 실행하면 HTTP에 대한 권한도 허용될 수 있다. 그러나 앱 출시 이전 도메인을 HTTPS로 변경요청을 서버 관리자 측에 요청해야 한다.

해당 내용은 Google Play Console의 내부 테스트를 돌려보고 난 후, 세부정보에서 보안 및 신뢰에 이슈가 발생하는 것을 확인할 수 있다.

 

 

결론 : 되도록 HTTPS를 사용하자.