ATSを無効にしているにも関わらず、SSL関連のエラーでサーバーに接続できない場合がありました。
問題の発生要因
接続先サーバーが TLS 1.0 になっている(と思われます、たぶん)
問題の発生する条件
iOS8,9でURLSession
を使うと発生します。
WebView
を使用する場合、またiOS10のURLSession
は問題ありません。
WebView | URLSession | |
---|---|---|
iOS8 | OK | NG |
iOS9 | OK | NG |
iOS10 | OK | OK |
対策
必ず TLS 1.0 で通信するように設定します。
let configuration = URLSessionConfiguration.ephemeral
configuration.tlsMaximumSupportedProtocol = .tlsProtocol1
configuration.tlsMinimumSupportedProtocol = .tlsProtocol1
let session = URLSession(configuration: configuration)
WebView
とiOS10のURLSession
は、
TLS 1.2 => TLS 1.1 => TLS 1.0
と順番に通信してくれているものの、
iOS8,9のURLSession
はそのような処理がされておらずエラーになるようです。