LoginSignup
13
13

More than 5 years have passed since last update.

[ATS]Amazon S3にホストしたHTTPSのコンテンツをXcode 7でビルドしたアプリ(iOS 9)からアクセスできるようにする

Last updated at Posted at 2015-10-06

Xcode 7でビルドしたアプリ(iOS 9)からHTTPSでWebにアクセスしているはずなのに、ATS(App Transport Security)の制限に引っかかり、

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

とのエラーが出て、S3にホストしたコンテンツの読み込みに何故か失敗した。

調べたところ、ATSは以下の暗号化アルゴリズム(Cipher Suite)しかサポートしていないらしい。
(参考: App Transport Security Technote

サポートするCipher Suite

TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

S3のCipher Suiteを調べたら、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHAだった。

$ curl -I -v https://_HOGE_.s3.amazonaws.com/hoge.jpg 
...
* Connected to _HOGE_.s3.amazonaws.com (XXX.XXX.XXX.XXX) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA ←←←←←←←←←← ここ
* Server certificate: *.s3.amazonaws.com
* Server certificate: VeriSign Class 3 Secure Server CA - G3
* Server certificate: VeriSign Class 3 Public Primary Certification Authority - G5
> HEAD /hoge.jpg HTTP/1.1
> Host: _HOGE_.s3.amazonaws.com

Info.plistNSExceptionRequiresForwardSecrecyの設定をNOにすると、TLS_RSA_WITH_AES_128_CBC_SHAのサイトにもアクセスができるようになるとのことなので、以下の設定をした。
(参考: App Transport Security Technote

Info.plist
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>_HOGE_.s3.amazonaws.com</key>
        <dict>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>

Property Editor
Kobito.KNzznu.png

この設定で無事に、iOS 9端末からS3にホストしたHTTPSのコンテンツを読み込めるようになりました。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13