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를 사용하자.