이 문제가 발생 하는 이유 와 그 해결 방법 에 대해 더 자세한 내용을 알고 싶은 분은 아래를 읽으십시오.
iOS 9가 도입됨에 따라 앱과 웹 서비스 간의 연결 보안을 향상 시키려면 앱과 웹 서비스 간의 보안 연결이 모범 사례를 따라야합니다 . 모범 사례 동작은 App Transport Security 에 의해 다음과 같이 시행됩니다 .
- 우발적 인 공개를 방지하고
- 안전한 기본 동작을 제공하십시오.
App Transport Security Technote에 설명 된 대로 웹 서비스와 통신 할 때 App Transport Security에는 다음 요구 사항과 동작이 있습니다.
- 서버는 최소한 TLS (Transport Layer Security) 프로토콜 버전 1.2를 지원해야합니다.
- 연결 암호는 순방향 보안을 제공하는 암호로 제한됩니다 (아래 암호 목록 참조).
- 인증서는 2048 비트 이상의 RSA 키 또는 256 비트 이상의 ECC (Elliptic-Curve) 키와 함께 SHA256 이상의 서명 해시 알고리즘을 사용하여 서명해야합니다.
- 유효하지 않은 인증서는 하드 실패로 연결되지 않습니다.
즉, 웹 서비스 요청은 a.) HTTPS를 사용 하고 b.) 순방향 보안이있는 TLS v1.2를 사용하여 암호화해야합니다.
그러나 다른 게시물에서 언급했듯이 앱에서 안전하지 않은 도메인을 지정하여 App Transport Security에서이 새로운 동작을 재정의 할 수 있습니다 Info.plist
.
재정의하려면 NSAppTransportSecurity
> NSExceptionDomains
사전 속성을 에 추가해야 합니다 Info.plist
. 다음으로 웹 서비스의 도메인을 NSExceptionDomains
사전에 추가합니다 .
예를 들어, www.yourwebservicehost.com 호스트에서 웹 서비스에 대한 App Transport Security 동작을 무시하려면 다음을 수행하십시오.
Xcode에서 앱을 엽니 다.
Info.plist
프로젝트 네비게이터 에서 파일을 찾아서 마우스 오른쪽 단추로 클릭 한 후 다른 이름으로 열기 > 소스 코드 메뉴 옵션을 선택하십시오. 속성 목록 파일이 오른쪽 창에 나타납니다.
다음 특성 블록을 기본 특성 사전 (첫 번째 아래) 안에 넣으십시오 <dict>
.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
추가 도메인에 대한 예외를 제공해야하는 경우 아래에 다른 사전 속성을 추가합니다 NSExceptionDomains
.
위에서 참조한 키에 대한 자세한 정보는 이미 언급 된 기술 노트를 읽으십시오 .