SlideShare a Scribd company logo
1 of 16
Download to read offline
1
Apple iOS9(ATS)への対応
株式会社Jストリーム
配信事業統括本部 事業推進部
マネージャー 佐藤 太一
© 2015 J-Stream Inc. All Rights Reserved.
Apple iOS9(ATS)への対応
▶アジェンダ
▶ATS(=App Transport Security)とは
▶サーバー側での対応
▶アプリケーション側での対応
▶参考:IPv6 only networkへの対応(DNS64+NAT64)
© 2015 J-Stream Inc. All Rights Reserved. 2
ATS(=App Transport Security)とは
▶Apple iOS9以降、Mac OS X v10.11以降で適用される、アプリケー
ション内の通信をセキュアにするためにAppleが導入した仕組み
▶現時点での最適に近いセキュアな接続をデフォルトとして動作させ
る
▶ATS対応が出来ていないと、Appleのアプリケーション審査を今後通
過する事が出来なくなる可能性がある
▶公式Webサイト
▶App Transport Security Technote
▶https://developer.apple.com/library/prerelease/mac/technotes/App-
Transport-Security-Technote/index.html
© 2015 J-Stream Inc. All Rights Reserved. 3
サーバー側での対応①
まとめ-1
▶外部の接続先(アプリ内からの通信先)に以下の要件が要求される
1. HTTPs(TLS version1.2)以上
2. 指定の暗号化スイート(CipherSuite)を利用
3. サーバー証明書の暗号化強度
▶SHA256以上のフィンガープリント
▶2048ビット以上のRSAキー、もしくは256ビット以上のElliptic-Curve(ECC)キー
4. 無効な証明書を指定した場合は接続不可
▶チェック用Webサイト
▶https://www.ssllabs.com/ssltest/
▶“Do not show the results on the boards”にチェックを入れましょう!
© 2015 J-Stream Inc. All Rights Reserved. 4
サーバー側での対応②
まとめ-2
© 2015 J-Stream Inc. All Rights Reserved. 5
パラメータ 必要性
デフォルト カスタマイズ デフォルト カスタマイズ
SSL証明書
署名 SHA256以上 不可 ー ー
公開鍵の鍵長
RSA2048以上、
EC256以上
不可 ー ー
プロトコル
SSLバージョン TLS 1.2 可能 ー ー
Forward Secrecy
(鍵交換アルゴリズム)
ECDHE 不可 必要 可能
サーバー側での対応③
1.HTTPs(TLS version1.2)以上
▶HTTPs(TLS version1.2)以上
▶SSL3.0の脆弱性(POODLE:2014/10)によりサーバー側、クライアント側共
にSSL3.0以下は塞がれている事が最近は多い
▶特にフィーチャーフォン対応で一部SSL3.0を残しているWebサイトはあるが、
多くのWebサイトは既に対応済
▶Internet Explorer 11は2015/4/14にSSL3.0を既定で無効化
▶Windows Update経由で自動的に変更されている
▶TLS version1.2をサーバー側でサポートするにはそれなりに新しいサーバー
ソフトウェアを利用する必要あり
▶Apache 2.2以降(+openssl1.0.1以降)
▶RHEL/CentOS標準提供のソフトウェアを利用の場合は6以降
▶Nginx1.1.13以降(+openssl1.0.1以降)
▶IIS 7.5以降
▶Win2008R2/Win7以降
© 2015 J-Stream Inc. All Rights Reserved. 6
サーバー側での対応④
2.指定の暗号化スイート(CipherSuite)を利用
▶指定の暗号化スイート(CipherSuite)
▶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
▶forward secrecy(前方秘匿性)対応が必要
▶SSL証明書の秘密鍵が漏洩しても、過去の通信に対する解読を不可能とすること
▶ECDHEを満たせば自動的に条件が満たされる
▶上記もある程度新しいソフトウェアでないと対応不可
▶openssl側では対応出来ていたがWebサーバーソフトウェア側で対応出来ていないといった事も有るので注意
▶将来的に変更される可能性あり
▶2015/08の対応中にtechnoteが変更されて色々大変でした
© 2015 J-Stream Inc. All Rights Reserved. 7
サーバー側での対応⑤
3.サーバー証明書の暗号化強度
▶サーバー証明書の暗号化強度
▶SHA256以上のフィンガープリント
▶2048ビット以上のRSAキー、もしくは256ビット以上のElliptic-Curve(ECC)キー
▶それぞれ業界主導でかなり進んでいるため、それ程大きな問題では
ない
▶SHA-1、1024ビットRSAキーのSSL証明書は既に多くのSSL事業者で発行停
止の状況
© 2015 J-Stream Inc. All Rights Reserved. 8
サーバー側での対応⑥
4.無効な証明書を指定した場合は接続不可
▶自己署名証明書(オレオレ証明書)の利用不可
▶SSL事業者から入手しましょう
© 2015 J-Stream Inc. All Rights Reserved. 9
アプリケーション側での対応①
まとめ
▶基本的にはサーバー側での対応を行うのが良
▶将来的にサーバー側対応が出来ていないとAppleの審査でNGになる可能性が高い
▶ATSがデフォルトで有効になる条件
▶アプリをiOS9用にビルドした場合(Xcode7)
▶iOS8以前向けにビルドした場合、ATSの強制適用は行われない
▶ATS有効化の影響範囲
▶概要
▶アプリからの通信において、HTTPアクセスがエラーとなる
▶対象となるAPI
▶NSURLConnection, CFURL, NSURLSession
▶関連クラス
▶WebView
▶回避方法が用意されている(Info.plist)
▶アプリ内全部のATSを無効にする(Apple非推奨)
▶利用するドメイン限定でATSを無効にする
▶暗号化通信の制限を緩和する
▶SFSafariViewControllerを利用する
© 2015 J-Stream Inc. All Rights Reserved. 10
アプリケーション側での対応②
ATS有効化の影響範囲 詳細
▶NSURLConnection, CFURL, NSURLSession
▶iOS 9.0 以降と OS X 10.11 以降向けにビルドされたアプリでは、
NSURLConnection、CFURL、NSURLSession を使用するすべての接続は
ATS デフォルトの挙動(=HTTPs通信)になる
▶WebView
▶HTTPのWebページは表示しない(内部エラーになる)
▶補足:SFSafariViewControllerはATSの影響を受けない
© 2015 J-Stream Inc. All Rights Reserved. 11
アプリケーション側での対応③
回避方法(Info.plist)
▶アプリ内全部のATSを無効にする(Apple非推奨)
▶利用するドメイン限定でATSを無効にする
© 2015 J-Stream Inc. All Rights Reserved. 12
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>sample.jp</key>
<dict>
<key>NSIncludesSubdomains</key> →サブドメインでの利用を許可
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> →HTTPの利用を許可
<true/>
</dict>
</dict>
</dict>
アプリケーション側での対応④
回避方法(Info.plist)
▶暗号化通信の制限を緩和する
▶SFSafariViewControllerを利用する
© 2015 J-Stream Inc. All Rights Reserved. 13
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>sample.jp</key>
<dict>
<key>NSTemporaryExceptionMinimumTLSVersion</key> →TLSの最小バージョンを指定
<string>TLSv1.1</string>
<key>NSExceptionRequiresForwardSecrecy</key> →ForwardSecrecyの評価をしない(利用できるChiperSuite拡大)
<false/>
</dict>
</dict>
</dict>
アプリケーション側での対応⑤
Xcodeを使用してATSをオフにする方法
© 2015 J-Stream Inc. All Rights Reserved. 14
▶Projectを選択
▶Supporting Filesを選択
▶Project名-info.plistを選択
▶Information Property List
で+ボタンを押してKeyを増
やす
▶増えたKeyに
NSAppTransportSecurityを
設定し、TypeはDictionaryに。
▶NSAppTransportSecurityで
+ボタンを押してKeyを増や
す。
▶増えたKeyに
NSAllowsArbitraryLoadsを
設定し、TypeはBoolean、
ValueにYESを設定。
参考:IPv6への対応(NAT64+DNS64)
▶WWDC2015で発表
▶参考(英語資料)
▶http://devstreaming.apple.com/videos/wwdc/2015/719ui2k57m/719/719_your_app
_and_next_generation_networks.pdf
▶iOS9ではクライアントアプリ側がIPv6環境で正常に通信出来る必要あり
▶Appleの審査でチェックされる(2016年初頭より)
▶AppStore上の無料TOP100アプリ中、30%のアプリは未対応(2015/07現在)
▶NAT64+DNS64対応と呼ばれる事が多い
▶以下のような実装に注意
▶IPv4 を前提とした変数/構造体 (uint32_t, in_addr, sockaddr_in)
▶IPv4 のみで利用可能なAPI (inet_aton, gethostbyname)
▶IPv4 のみで動作するAPI の呼出 (gethostbyname2(hostname, AF_INET))
▶IPv4 に依存したネットワークの接続チェックが発生する場合
▶デバイスが IPv4 アドレスを持っているか
▶0.0.0.0 に接続できるか
© 2015 J-Stream Inc. All Rights Reserved. 15
まとめ
Apple iOS9(ATS)への対応
▶Apple iOS9以降、Mac OS X v10.11のアプリケーション内通信は
サーバー側で以下を満たす必要がある
▶HTTPs(TLSv1.2以上)、指定のCipherSuteを利用、SHA256/2048bit 他
▶サーバー側の対応が難しい場合はアプリケーション側で回避策を利
用して対応
▶参考:IPv6対応も忘れずに!
© 2015 J-Stream Inc. All Rights Reserved. 16

More Related Content

More from J-Stream Inc.

Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?
J-Stream Inc.
 

More from J-Stream Inc. (9)

マルチCDNの概要
マルチCDNの概要マルチCDNの概要
マルチCDNの概要
 
Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?
 
WordPressのCDN化
WordPressのCDN化WordPressのCDN化
WordPressのCDN化
 
CDNのパフォーマンス比較/Cedexis
CDNのパフォーマンス比較/CedexisCDNのパフォーマンス比較/Cedexis
CDNのパフォーマンス比較/Cedexis
 
SSLの最新トレンド
SSLの最新トレンドSSLの最新トレンド
SSLの最新トレンド
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
 
CDNホットトピック(SSLとパケット着信課金)
CDNホットトピック(SSLとパケット着信課金)CDNホットトピック(SSLとパケット着信課金)
CDNホットトピック(SSLとパケット着信課金)
 
次世代CDNのトレンド
次世代CDNのトレンド次世代CDNのトレンド
次世代CDNのトレンド
 
ストリーミングのTLS(SSL)化
ストリーミングのTLS(SSL)化ストリーミングのTLS(SSL)化
ストリーミングのTLS(SSL)化
 

Recently uploaded

Recently uploaded (7)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Apple iOS9 (ATS)への対応