티스토리 뷰
통신과정에서 다음과 같은 로그와 마주하게 되었다.
"unable to determine interface type without an established connection"
"unable to determine fallback status without a connection"
간단히 해석하면 "연결 설정이 되어 있지 않은 경우 인터페이스 타입을 결정할 수 없다."가 될 것 같다.
네트워크 통신과정에서 눈에 띄는 문제는 없었으나 어쨋든 이런 로그가 찍히면 불안하기 때문에 무엇이 문제인지 찾아보았다.
서버사이드 문제로 애플에서 요구하는 *TLS(전송계층보안)를 충족하지 못할 경우 위와 같이 로그가 뜨거나 실제 기기에서 네트워크 통신이 안되거나 하는 문제가 발생하는 것 같다.
* TLS: 전송 계층 보안, 암호 프로토콜로 서버와 클라이언트 애플리케이션이 네트워크로 통신하는 과정에서 도청, 간섭, 위조를 방지하기 위해 설계됨
support.apple.com/en-us/HT210176
HTTPS의 경우 TLS를 사용해 암호화된 연결을 하는 HTTP프로토콜이다.
HTTPS프로토콜을 사용해도, 다음과 같은 조건을 충족하지 못하면 TLS문제와 마주할 수 있다.
1. 서버는 TLS(Transport Layer Security) 프로토콜 버전 1.2 이상을 지원해야 함
2. 적어도 2048비트 이상의 RSA 키 사용해야 함
...
해결 방법:
ATS는 App Transport Security의 약자로 민감한 정보가 유출되는 것을 방지하고 인터넷 통신 시 안전한 프로토콜을 사용하도록 보장하는 역할을 한다. Ex) 보안이 취약한 네트워크의 경우 연결을 차단
그래서 보통 HTTP 서버와 통신을 할 경우 info.plist 파일에서 App Transport Security Settings 추가 후 Allow Arbitrary Loads를 YES로 설정하는데, TLS 문제의 경우도 다음과 같이 설정함으로써 문제를 해결할 수 있다.
'Swift&iOS > iOS' 카테고리의 다른 글
[iOS] GCD - QoS, DispatchWorkItem, DispatchGroup 제대로 알고 쓰자! (2) (0) | 2021.04.13 |
---|---|
[iOS] GCD - Dispatch Queue 제대로 알고 쓰자! (1) (1) | 2021.04.11 |
[iOS] MVVM 디자인 패턴 정리 및 예제코드 (11) | 2020.11.17 |
[iOS] UITableView, UICollectionView Cell 버튼 상태 유지 방법 (0) | 2020.10.28 |
[iOS] Cell을 재사용시 생기는 문제점들과 해결 방법 (1) | 2020.10.26 |