2014-03-18

iOS 7.1 無法利用 http 佈署企業 app

目前開發企業內部使用之 app ,iOS 7 之前,用企業 provision 可以將程式打包成 ipa 檔,利用 itms-services:// 開頭的網址搭配一個描述檔 (plist) 來安裝 ipa 檔,如
itms-services://?action=download-manifest&url=http://www.test.com/app.plist

可是到了 iOS 7.1 之後,就會發生:無法安裝應用程式,因為「www.test.com」的憑證無效。

上網查了一下,才發現原來 iOS 7.1 之後 plist 檔一定要在認可的 https 協定下載,目前可行的方法有:

  1. 為網站購買 SSL 憑證,改走 https 的方式進行安裝
  2. 使用 openssl 自簽憑證,iDevice 上要先匯入自簽根憑證才可使用
  3. 將 plist 檔放在別人提供的 https 空間(如 dropbox),再利用此種模式下載安裝
第一種方式就不用講了,第二種方式的處理方式如下:
  1. 產生自簽根金鑰
    openssl genrsa -out myCA.key 2048
  2. 產生自簽根憑證
    openssl req -x509 -new -key myCA.key -out myCA.cer -days 3650 -subj /CN="小虫CA"
  3. 產生網站金鑰
    openssl genrsa -out mycert1.key 2048
  4. 產生 CSR
    openssl req -new -out mycert1.req -key mycert1.key -subj /CN=www.test.com
  5. 利用自簽根金鑰
    openssl x509 -req -in mycert1.req -out mycert1.cer -CAkey myCA.key -CA myCA.cer -days 365 -CAcreateserial -CAserial serial
  6. 網站使用 mycert1.key 及 mycert1.cer 來加密,iDevice 先匯入 myCA.cer 即可利用 https 連線到網站上了
  7. 再利用以下網址即可進行網路安裝 ipa
    itms-services://?action=download-manifest&url=https://www.test.com/app.plist
第三種方式,可以將 plist 放置 Dropbox 上,步驟如下:
  1. 將 plist 檔放置 dropbox 下
  2. 取得 plist 檔的分享路徑,如
    https://www.dropbox.com/s/jwwu4p1kctqenva/app.plist
  3. 將 www.dropbox.com 改為 dl.dropboxusercontent.com,如
    https://dl.dropboxusercontent.com/s/jwwu4p1kctqenva/app.plist
  4. 將 app 安裝的網址改為使用第三點的 link 即可,如:
    itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/jwwu4p1kctqenva/app.plist