Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
Apple iOS9(ATS)への対応
株式会社Jストリーム
配信事業統括本部 事業推進部
マネージャー 佐藤 太一
© 2015 J-Stream Inc. All Rights Reserved.
Apple iOS9(ATS)への対応
▶アジェンダ
▶ATS(=App Transport Security)とは
▶サーバー側での対応
▶アプリケーション側での対応
▶参考:IPv6 only networkへの対応(DNS64+NAT64...
ATS(=App Transport Security)とは
▶Apple iOS9以降、Mac OS X v10.11以降で適用される、アプリケー
ション内の通信をセキュアにするためにAppleが導入した仕組み
▶現時点での最適に近いセキュア...
サーバー側での対応①
まとめ-1
▶外部の接続先(アプリ内からの通信先)に以下の要件が要求される
1. HTTPs(TLS version1.2)以上
2. 指定の暗号化スイート(CipherSuite)を利用
3. サーバー証明書の暗号化強度...
サーバー側での対応②
まとめ-2
© 2015 J-Stream Inc. All Rights Reserved. 5
パラメータ 必要性
デフォルト カスタマイズ デフォルト カスタマイズ
SSL証明書
署名 SHA256以上 不可 ー ー...
サーバー側での対応③
1.HTTPs(TLS version1.2)以上
▶HTTPs(TLS version1.2)以上
▶SSL3.0の脆弱性(POODLE:2014/10)によりサーバー側、クライアント側共
にSSL3.0以下は塞がれてい...
サーバー側での対応④
2.指定の暗号化スイート(CipherSuite)を利用
▶指定の暗号化スイート(CipherSuite)
▶TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
▶TLS_ECDHE_ECDSA...
サーバー側での対応⑤
3.サーバー証明書の暗号化強度
▶サーバー証明書の暗号化強度
▶SHA256以上のフィンガープリント
▶2048ビット以上のRSAキー、もしくは256ビット以上のElliptic-Curve(ECC)キー
▶それぞれ業界主...
サーバー側での対応⑥
4.無効な証明書を指定した場合は接続不可
▶自己署名証明書(オレオレ証明書)の利用不可
▶SSL事業者から入手しましょう
© 2015 J-Stream Inc. All Rights Reserved. 9
アプリケーション側での対応①
まとめ
▶基本的にはサーバー側での対応を行うのが良
▶将来的にサーバー側対応が出来ていないとAppleの審査でNGになる可能性が高い
▶ATSがデフォルトで有効になる条件
▶アプリをiOS9用にビルドした場合(Xc...
アプリケーション側での対応②
ATS有効化の影響範囲 詳細
▶NSURLConnection, CFURL, NSURLSession
▶iOS 9.0 以降と OS X 10.11 以降向けにビルドされたアプリでは、
NSURLConnect...
アプリケーション側での対応③
回避方法(Info.plist)
▶アプリ内全部のATSを無効にする(Apple非推奨)
▶利用するドメイン限定でATSを無効にする
© 2015 J-Stream Inc. All Rights Reserved...
アプリケーション側での対応④
回避方法(Info.plist)
▶暗号化通信の制限を緩和する
▶SFSafariViewControllerを利用する
© 2015 J-Stream Inc. All Rights Reserved. 13
<...
アプリケーション側での対応⑤
Xcodeを使用してATSをオフにする方法
© 2015 J-Stream Inc. All Rights Reserved. 14
▶Projectを選択
▶Supporting Filesを選択
▶Projec...
参考:IPv6への対応(NAT64+DNS64)
▶WWDC2015で発表
▶参考(英語資料)
▶http://devstreaming.apple.com/videos/wwdc/2015/719ui2k57m/719/719_your_ap...
まとめ
Apple iOS9(ATS)への対応
▶Apple iOS9以降、Mac OS X v10.11のアプリケーション内通信は
サーバー側で以下を満たす必要がある
▶HTTPs(TLSv1.2以上)、指定のCipherSuteを利用、SH...
Upcoming SlideShare
Loading in …5
×

Apple iOS9 (ATS)への対応

7,273 views

Published on

2015年10月6日に開催した「 常時SSL化の時代へ」セミナーのプレゼンテーション資料です。

Published in: Technology
  • Be the first to comment

Apple iOS9 (ATS)への対応

  1. 1. 1 Apple iOS9(ATS)への対応 株式会社Jストリーム 配信事業統括本部 事業推進部 マネージャー 佐藤 太一 © 2015 J-Stream Inc. All Rights Reserved.
  2. 2. Apple iOS9(ATS)への対応 ▶アジェンダ ▶ATS(=App Transport Security)とは ▶サーバー側での対応 ▶アプリケーション側での対応 ▶参考:IPv6 only networkへの対応(DNS64+NAT64) © 2015 J-Stream Inc. All Rights Reserved. 2
  3. 3. 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
  4. 4. サーバー側での対応① まとめ-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
  5. 5. サーバー側での対応② まとめ-2 © 2015 J-Stream Inc. All Rights Reserved. 5 パラメータ 必要性 デフォルト カスタマイズ デフォルト カスタマイズ SSL証明書 署名 SHA256以上 不可 ー ー 公開鍵の鍵長 RSA2048以上、 EC256以上 不可 ー ー プロトコル SSLバージョン TLS 1.2 可能 ー ー Forward Secrecy (鍵交換アルゴリズム) ECDHE 不可 必要 可能
  6. 6. サーバー側での対応③ 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
  7. 7. サーバー側での対応④ 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
  8. 8. サーバー側での対応⑤ 3.サーバー証明書の暗号化強度 ▶サーバー証明書の暗号化強度 ▶SHA256以上のフィンガープリント ▶2048ビット以上のRSAキー、もしくは256ビット以上のElliptic-Curve(ECC)キー ▶それぞれ業界主導でかなり進んでいるため、それ程大きな問題では ない ▶SHA-1、1024ビットRSAキーのSSL証明書は既に多くのSSL事業者で発行停 止の状況 © 2015 J-Stream Inc. All Rights Reserved. 8
  9. 9. サーバー側での対応⑥ 4.無効な証明書を指定した場合は接続不可 ▶自己署名証明書(オレオレ証明書)の利用不可 ▶SSL事業者から入手しましょう © 2015 J-Stream Inc. All Rights Reserved. 9
  10. 10. アプリケーション側での対応① まとめ ▶基本的にはサーバー側での対応を行うのが良 ▶将来的にサーバー側対応が出来ていないと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
  11. 11. アプリケーション側での対応② 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
  12. 12. アプリケーション側での対応③ 回避方法(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>
  13. 13. アプリケーション側での対応④ 回避方法(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>
  14. 14. アプリケーション側での対応⑤ 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を設定。
  15. 15. 参考: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
  16. 16. まとめ 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

×