2013-03-06 178 views
27

我對供應配置文件,證書是否正確(開發期間)有所瞭解?瞭解iOS中的配給配置文件和證書

  1. 在設備上安裝時,應用程序是否使用來自xcode的開發人員證書進行簽名?證書應存在於供應配置文件中(存儲在IPad/IPhone中),並且安裝設備的deviceid也應存在於供應配置文件中。
  2. 因此,當設備未連接到開發人員mac時單擊某個應用程序時,應用程序的簽名證書應與配置配置文件(設備上存在)中的一個匹配,且設備ID也應與配置中的一個匹配配置文件,只有當應用程序會運行。
  3. 當設備連接到運行xcode的mac並且您想調試時,存儲在鑰匙串中的公鑰+私鑰進入遊戲,xcode使用證書嘗試解鎖存儲在鑰匙串中的公鑰+私鑰,因此標識了mac,並且還執行了上面的項目符號,如果這也是真的,那麼您可以成功調試
+19

一個[輝煌的教程](http://escoz.com/blog/demystifying-ios-certificates-and-provisioning-files/)在您的業餘時間閱讀.. – Krishnabhadra 2013-03-06 03:55:35

+3

所以你是在你的業餘時間,對? – Krishnabhadra 2013-03-06 04:21:37

+0

不錯的教程:) – z22 2013-09-25 07:02:54

回答

21

首先,在Xcode中選擇配置文件是有誤導性的;在Xcode中編譯實際上與配置文件無關!實際發生的情況是,Xcode只是將配置文件中的公鑰證書與鑰匙串中的公鑰證書相匹配,然後使用私鑰簽署可執行文件。這是bog標準的Mach-O可執行文件簽名。這也是他們爲什麼在Xcode 5中將其更改得更加清晰的原因。這也是配置文件上的錯誤(未找到簽名身份)的原因 - 這意味着Xcode無法找到與配置文件中任何公鑰對應的私鑰。

你的個人開發者證書是標準的PKI東西;您的Mac會以Apple不知道您的私鑰(與SSL證書請求類似)的方式向Apple發送證書請求。 Apple生成證書,鑰匙串將其與原始請求進行匹配,爲您提供證書的公鑰和私鑰。爲單個開發人員創建配置文件時,會列出該開發人員的公鑰。創建團隊簡介時,包括所有選定團隊成員的公鑰。這允許團隊成員簽署可執行文件,但簽名者的名稱將是團隊名稱而不是個人。

當iOS啓動任何可執行文件時,它首先檢查簽名。如果簽名由Apple App Store簽名,則運行。

如果不是,它會檢查已安裝的設置配置文件。這些配置文件包括: 1.開發人員證書列表 2.應用程序ID 3.授予權限(例如iCloud,Game Center等) 4.設備UDID列表 5.整個事情結束並由Apple簽署。

檢查配置文件以確保它是由Apple的密鑰(使用Apple的公鑰)簽名的。然後驗證當前設備的UDID是否在列表中。它還驗證應用程序ID是否匹配(儘管允許使用通配符)。然後它根據有效的開發人員證書公鑰的列表檢查Mach-O簽名。如果它們中的任何一個匹配,則可執行文件運行並被授予列出的權利。如果沒有,則被阻止。

我強烈建議在文本編輯器中打開一個.mobileprovision文件;你會學到很多!

+0

其中.mobileprovision文件位於何處?我無法在我的Xcode項目目錄中找到它。 – almel 2014-07-24 02:15:39

+0

您可以從配置文件下的Member Center下載它們。 – russbishop 2014-10-07 18:04:29

+1

在您的系統中,當您安裝配置文件時,它將出現在〜/ Library/MobileDevice/Provisioning Profiles – Raghav 2014-10-30 06:19:55