2015年10月7日水曜日

iOS9のATS絡みの審査とリジェクトについて

Zメンです。iOSの開発に関するあれこれを書いていきます。



■iOS9で出てきたATSってなに?


iOS9が出てから(っていうか出る前から)開発者の間でATS絡みの話題が結構出てますね。
ATS自体はいまさら感がありますが、結局審査の時どうなるの?というところが意外と触れられてないです。
ちなみにATSはAppTransportSecurityの略ですね。


簡単に言うと
「今後アプリでの通信は全てHTTPSが推奨ですから!」
「HTTPで通信しようとしたらHTTPSに強制変換しますから!!」
な話です。


これが結構曲者な感じで、
HTTPSといっても『あれね、SSLね』ではなくて、具体的には
 ○TLS バージョン 1.2 以上
 ○接続時に使用できる暗号スイートに制限がある
 ○サーバ証明書に制限がある
   ・SHA256 以上のフィンガープリント
   ・2048 ビット以上の RSA キー、もしくは 256 ビット以上のECCキー
   ・無効な証明書を使用した場合は強制的に失敗になり、接続できない
な条件があります。


なので使用しているサーバーの環境によってそもそも対応できないよ!てことが普通にあるかと。
運営しているサイトがでかければでかいほどこのへんの変更は時間かかりそうですね。



■ATSの暫定対応(非推奨)


先に公開されてる対応方法だけ書いておきます。
といってもいろんなところで既に書かれまくっているので
こことかここ
とか参考にしてもらったほうが早いです。
『iOS ATS』でわんさか出てきます。



■懸念点と審査・リジェクト


今回の仕様変更の影響範囲は通信全てなので、
NSURLConnectionAFNetworkingみたいなAPI通信以外にも
UIWebViewだとかWKWebViewのようなWEBページ表示もしっかり影響範囲です。



大手でもまだまだWebViewベースでアプリを作ってるところもあるなかで、
この仕様変更は結構きついなーと。

一応HTTPSで動作確認はしましたが、
 ・CDN使ってるとこ
 ・広告表示してるとこ・
 ・オーディエンスデータとってるとこ
などなどがほんとに動作保障しきれるのか?とかなり不安です。
一部通信エラーっぽいログとか出てたし。(ログはかなり不親切)


なので jQueryみたいなCDNのはまだいいとして、個々の広告業者なんかは
しらみつぶしに検証するとかほんと時間の無駄。


クックパッド開発者ブログ
さすがcookpadさん、この辺も言及されてますね。


で、本題のそもそもATSを無効にした場合、
とくにWebView使ってて NSAllowsArbitraryLoadsで設定を切らざるを得ない場合、
はたして審査は通過するのか、ということです。


このあたりは丁度審査中なので追って追記します。
2015.10.08 追記)
審査無事通過しました。
ドメインを個別に指定する方法でも、BOOL値切替でもどちらでも
今のところ審査には支障はないみたいです。



ちなみに、審査通ったからと言ってHTTPSとか考慮しないし、
という訳ではなく、iOSX?以降で必須にされる場合ももちろんあるだろうし、
Appleに対してすべての通信がSecureであるよ、とちゃんと伝える意味でも
早めにATSに準拠したかたちに修正するのが望ましいでしょうね。



参考)Apple Developer 公式ドキュメント


0 コメント:

コメントを投稿