【悲報】iOS7.1から企業内アプリ配布(Enterprise In-House)にSSLが必須となった模様

証明書が有効でないためAppをインストールできません

3/11にiOS7.1がリリースされたため、3/12に業務での開発に使用しているiPadを7.0.6から7.1にアップデートしてみました。

全体的に動作がサクサクになりましたが、iOS Developer Enterprise Programで企業内アプリ配布を行っている場合、影響が大きそうな変更があり、1時間ほどハマったので発生した問題と解決方法についてメモします。

発生した問題

iOS Developer Enterprise Programに加入していると企業内に限り、作成したiOSアプリを端末台数無制限でAppStoreを通さずに配布できます。

参考:iOS Developer Enterpriseで社内向けiPhoneアプリを作る方法 [完全版]

いつもはアプリのファイル(*.ipa)とマニフェストファイル(*.plist)を用意し、以下のようにitms-servicesプロトコルを使用してURLからアプリを端末にインストールしています。

itms-services://?action=download-manifest&url=http://example.com/app.plist

しかしiOS7.1にアップデート後から急に「”example.com”の証明書が有効ではないため、Appをインストールできません。」というエラーが出てアプリをインストールできなくなってしまいました。
(example.comの部分は実際にplistファイルを配置しているURLのホスト名です。)

証明書が有効でないためAppをインストールできません

ちなみに3/12の朝、iOS7.0.6の状態のときは問題なくインストールできていました。

原因と解決方法

サイトの証明書に問題がありそうなエラーメッセージだったので、試しにSSLが有効なサーバーにアプリのファイル(*.ipa)とマニフェストファイル(*.plist)を配置し、以下のようにitms-servicesプロトコルのパラメータで指定するURLをhttps://に変更してアクセスしてみたところ、今まで通りアプリをインストール出来ました。

itms-services://?action=download-manifest&url=https://example.com/app.plist

アプリインストール可能

どうやらiOS7.1からitms-servicesプロトコルのパラメータで指定するURLがhttpではなくhttpsでないとアプリをインストール出来なくなったようです。

さらに「ios7.1 inhouse」でGoogle検索したところStack Overflowでも同様の問題が投稿されており、解決方法も回答されていました。既に昨年11月にiOS7.1 Betaの時点でわかっていた問題だったようですね。

Could not load non-https manifest URL: http://example.com/manifest.plist

上記で回答されている方はiPadをPCに接続し、XCode Organizerのコンソールメッセージよりhttpsでないマニフェストファイルを読み込めない旨のエラーが出ていたことを調べたようでした。

やはりiOS7.1からhttpsでないとマニフェストファイルが読み込めなくなったとみて間違いなさそうです。

おわりに

iOS7.1のセキュリティ関連の変更をざっと見てみましたが、本変更に該当するものは見当たりませんでした。

今まではhttpでも配布出来ていたのがhttps限定となったことで、エンタープライズアプリ配布を使用しており企業内の多くのデバイスをiOS7.1にアップデートする場合は混乱が起きそうな変更なのでバージョンアップの際には注意が必要ですね。