iOS7.1無法安裝Ad-Hoc的解決方式

iOS7.1無法安裝Ad-Hoc的解決方式

iOS 7.1開始要求開發者需要使用Ad-Hoc給其他測試人員安裝*.ipa時,放置*.ipa/*.plist的伺服器需支援「SSL憑證」

然而,網路上的文章大部分都是指導如果建置在Mac OS的系統或是Dropbox,那麼如果公司是不支援以上二種情況,

那就需要建設再自己的IIS裡了。

 

因此,該篇將介紹如何安裝Ad-Hoc + SSL在IIS裡面。

 

〉事前提要

    由於需要支援SSL,所以在*.plist的檔案與提供連結至*.plist的檔案需要做URL的處理,例如:

‧在*.plist裡:

<string>https://localhost/iOSProj/2.2/Iphone2.2.1.25.ipa</string>

 

‧在提供連結至*.plist的HTML檔案裡:

<a rel="external" 
   href="itms-services://?action=download-manifest&url=https://localhost/iOSProj/2.2/myApp.plist"
 >下載2.2</a>

把原本是http的部分,改為「https」,這樣一來就可以讓設備進行下載。

 

 

〉設定IIS支援SSL憑證與通訊協定

    在IIS開啟SSL連線方式,需要建立SSL憑證才能使用,建立與安裝方式可參考<購買與安裝 SSL 憑證完全攻略(以 IIS7 為例)>

[Windows] IIS 7 安裝憑證授權單位產生之伺服器憑證 (IIS7 Install Issue SSL Certificate),可建立與安裝自己專屬的SSL憑證。

 

但是這樣建立的憑證,對於iPhone/iPad在Ad-Hoc架構下是不被允許,原因在於透過IIS預設建立好的SSL憑證(自我簽署憑證)沒有

正確對應的授權,例如:Common Name是本機,如下圖:

image

因此,在iPhone/iPad上應會看到「無法連線 xxxx.xxx.xxx.xxx」的訊息,主要就是因為憑證是不合法的。

 

那該怎麼來解決這樣的問題?參考<Five Tips for Using Self Signed SSL Certificates with iOS>介紹的

Tip #4 – Creating Self-Signed Certificates with OpenSSL is Easy」,透過OpenSSL建立適用於Ad-Hoc的*.cer與*.pfx檔案,

分別安裝於iOS設備與IIS。

 

A. 下載與安裝OpenSSL

    可參考<AppServ + OpenSSL in Win32>這一篇來下載OpenSSL執行檔,並將它安裝至路徑:「C:\openssl\win32」。

 

 

B. 利用OpenSSL建立SSL憑證

    B-1. 建立private key file:

     openssl genrsa -out myselfsigned.key 2048

           {myselfsigned}.key可按照自己需求換成需要的檔案名稱。

 

    B-2. 建立self signed certificate(*.cer):

     openssl req -new -x509 -key myselfsigned.key -out myselfsigned.cer -days 365 -subj /CN=www.mysite.com

          {myselfigned}.key與{myselfigned}.cer可按照需求修改。需要注意:CN給值的部分,上述範例給予的是domain name,

          如果您本身要當Ad-Hoc的主機沒有domain name只有ip address的話,則需要輸入為ip address。

 

    B-3. 搭配private key file與self signed certificate建立IIS安裝憑證需要的*.pfx:

           完成了B-1,B-2的指令後會產生*.key與*.cer二個檔案,接下來需依賴這二個檔案建立*.pfx檔案。

     openssl pkcs12 -export -out myselfsigned.pfx -inkey myselfsigned.key -in myselfsigned.cer 

          挑配pcks12機制建立*.pfx檔案,在建立過程會需要加入密碼,可按照需求來輸入。

 

 

C. 安裝建立好的*.pfx至當Ad-Hoc的IIS

     C-1. 安裝*.pfx:

            開啟IIS選擇「伺服器憑證」:

            image

            選擇「匯入」,將*.pfx安裝至IIS:

            image

            安裝完成後,如下圖:

            image

            安裝完成後名稱會是空白的,但是不打緊因為這個不是iOS設備驗證的條件。

 

     C-2. 設定IIS開啟SSL通訊協定與對應的憑證:      

            選擇IIS站台的「繫結」,設定SSL通訊協定並選擇以剛才建立的SSL憑證為主:

            image

 

     C-3. 開放防火牆例外:

            image

 

 

D. 寄送*.cer給需要透過Ad-Hoc的設備,並且安裝*.cer至設備中

     透過mail的方式寄送,需要搭配iPhone/iPad內鍵的郵件App來加以安裝,如下圖:

     image

     在預設的Mail應用程式裡可以直接點擊該*.cer憑證,系統會自動跳至「settings->general->profiles

     提示您是否安裝憑證,這個時候記得選擇安裝,就可以看到如下圖您的憑證變成了「Trusted」。

     image

     要記得如果您的Ad-hoc主機是沒有domain name的,請記得把CN設定為IP Address。

 

 

E. 重新建立*.ipa需要的憑證,並包裝至*.ipa中

     透過XCode的工具重新包裝*.ipa需要的憑證,選擇最新續約的憑證來加以建立,另外記得勾選可安裝App的設備ID,

     如下圖:

     image

     這樣就可以重新建立*.ipa與*.plist檔案,也要記得把*.plist中給予*.ipa的URL改用https的通訊方式。

 

 

完成以上A~E的部分,iPhone/iPad就可以透過Safari連結到IIS主機所建立的Ad-Hoc架構來安裝Apps。

目前測試下來是可以正常讓設備安裝的,如果有遇到任何補充的情況會在下方加以補充。

 

[補充]

1. 如果您照上述安裝完成後,App無法被下載的話,可以看一下提供下載的網站是否選擇了SSL驗證。

   image

   例如:IIS有一個網站:A,您的*.plist/*.ipa放在A網站時,A網站則需要開啟「SSL設定」來開啟SSL使用。

======

以上是分享如何在IIS建立/安裝SSL憑證,以支援Ad-Hoc的架構讓iPhone/iPad在升級至iOS 7.1之後,可以正常使用。

非常感謝yoyo與其他Blogger的指導與建議,謝謝。

 

References

Five Tips for Using Self Signed SSL Certificates with iOS (重要)

AppServ + OpenSSL in Win32

Creating a Self-Signed Certificate using OpenSSL for use with Microsoft Internet Information Services (IIS) 5 (重要)

以 Ad-Hoc 方式測試軟體 iOS 7.1 裝置需要使用具 SSL 憑證的伺服器

iOS7.1にしたらAdhocのOTAインストールできなくなって困った。

【SSL証明書タダ】iOS7.1からAdhocアプリのOTAインストールでSSL証明書が必要になったのでGlobalSignの無償提供に食いついてみたよ

購買與安裝 SSL 憑證完全攻略(以 IIS7 為例)

在 IIS7 IIS7.5 安裝 SSL 憑證的注意事項

Generating a Certificate Request File Using the Certificate Wizard in IIS 5.0

Create PKCS#12 file with self-signed certificate via OpenSSL in Windows for my Android App

Enterprise app deployment doesn't work on iOS 7.1 (重要)

以 Ad-Hoc 方式測試軟體 iOS 7.1 裝置需要使用具 SSL 憑證的伺服器 (重要)

 

Dotblogs 的標籤: