iOS9のApp Transport Securityについて調べてみた
さて、今月、最終日になんとかブログ更新です。
来週、新型iPhoneの発表が期待される中、開発者間で話題となっているApp Transport Security(以下、ATS)について調べてみました。
ATSの詳細はiOS9 ATS問題などで既に詳しく書かれていますので、割愛します。
どちらかと言うと実開発よりで話をしたいと思います。
これまで筆者はiOSアプリを作り続けてきたわけなんですが、実は会社では所謂ハイブリッドアプリと呼ばれる、 WebViewを用いたアプリ の開発をすることが多く、古くからあるUIWebViewはもちろんのことWKWebViewも利用してきました。
正直、これまで特別な場合を覗いて、 HTTPS を意識することはありませんでした。
しかし、昨今のセキュリティ問題から周りの考え方も変わりつつあります。
それをさらに一押したのが、iOS9のATSではないかと考えています。
今後は、グローバルに空いているサーバに対しては HTTPS しか許されないことになることでしょう。
iOS8でのWKWebViewにおける自己証明書について
iOS9の具体的な話に入る前に一言だけ。
周知のことかもしれませんが、iOS8のWKWebViewでは自己証明書を利用したサーバの https から始まるURLを指定することはできません。
指定したとしても、表示することができません。
これはstackoverflow – Allow unverified ssl certificates in WKWebViewに書かれている通り、WKNavigationDelegate Protocolである didReceiveAuthenticationChallenge メソッドが呼ばれないためです。
iOS8が登場した当初はバグでは?と騒がれていましたが、iOS9での HTTPS 推奨の流れから見るに、わざとだったのでは?とも勘ぐれますね…。
iOS9でのWKWebViewにおける自己証明書について
iOS9からは didReceiveAuthenticationChallenge メソッドを通るらしく、コードを書くことで、自己証明書を利用したHTTPS通信が可能なようです。
iOS9からWKWebViewのSSL/TLS接続はコードで制御するを参照のこと。
確かに、問題なく、実行できることを確認しました。
iOS9でのHTTP通信許可方法について
Info.plistに下記の設定を入れることで、全てのHTTP通信を許可できます。
1 2 3 4 5 |
|
流石に全てを許可するのははばかられるといった場合にはHTTP通信を許可するドメインを指定することもできます。
1 2 3 4 5 6 7 8 9 10 11 |
|
しかし、これには注意が必要です。
もしも、指定したドメインアクセス時に呼び出されるHTMLファイルの中に、外部ドメインから取得しているJavaScriptファイルがあった場合、それらもInfo.plistに指定する必要があります。
これまで、WebソースはAppleの審査を介さずとも変更が可能な範疇でしたが、HTTP通信として設定を必要とする場合が出てくるため、十分に注意が必要です。
HTTP, HTTPSのどちらでもソースが取得できる場合は、Info.plistにHTTP通信用のドメインとして登録するのではなく、下記のように https からパスを指定した方が良いでしょう。
1
|
|
本日は試してみたことをパパっと書きましたが、時間があるときにもっと探ってみようと思います。
と言ったところで本日はここまで。