6

本主題繼續讓我困惑。我想我會寫出我目前的理解,並希望找出我對錯的事情。證書,配置文件,公鑰/私鑰被揭祕

創建開發證書時,存在公鑰和私鑰的概念。通過配置門戶可用的證書可保存公鑰,而私鑰存儲在鑰匙串中。爲了對應用程序進行代碼簽名,您必須同時擁有兩者。

爲了運行一個應用程序,設備必須有一個供應配置文件,它基本上保留一個應用程序標識符,一組可識別的證書(應用程序必須由其中一個證書籤名)和一個設備標識符集(指示哪些設備可以運行該應用程序)。

'認可的證書'具有對公鑰的引用,而私鑰實質上是由應用傳遞的。

因此,對於App Store,我們可以將普通設備看作是一個默認的配置文件,它已經有了蘋果的「公鑰」,蘋果在分發之前執行它們自己的代碼簽名操作,鍵。

完美嗎?關?離開?瘋?

+0

尋找完美的,因爲按我的知識。 –

回答

1

Ray Wenderlich對其進行了合理的解釋here。爲了改善而不是

你的描述中,「認可證書」有,公鑰引用而 私鑰由應用程序本質上傳遞。

我會說:

該應用程序的.ipa包括一個開發者證書。開發者 證書使用您的私鑰 - 以及 官方Apple私鑰進行簽名。

因此,通過驗證與蘋果和您的公鑰的開發者證書,iPhone可以驗證:

  • 你是這個程序
  • 你已經爲應用程序認證通過蘋果的開發者開發
  • 此應用程序允許在iPhone上運行(只要在手機上提供了此開發人員證書的設置配置文件)。

您的私鑰不存儲在任何證書或配置文件中,它僅用於簽名。不知道是否存儲公鑰。爲了完全安全,手機應在驗證時從Apple獲取公鑰。

+0

是否可以從ios應用程序證書獲取公鑰/私鑰? –

+0

@ iTroyd23您當然不能從證書中獲得私鑰,因爲這將是一個重大的安全漏洞。公鑰,我不知道。即使它們在證書中,設備仍然應該從服務器請求它們,以避免其他安全漏洞。 – fishinear

+0

好的謝謝。蘋果是否允許通過自己的應用程序訪問配置文件? –

4

對於它的價值,這是我更新的認識:

的供應曲線是告訴你哪些應用程序(通過一個AppID)的文件,由開發者(通過證書)簽署可以運行在哪些設備(UDID)。

使用證書,有一個公共和私有密鑰的概念。公鑰和私鑰在數學上是鏈接的,因此可以加密純文本,並且可以解密密文。證書允許蘋果確保兩件事情:1,只有註冊的開發者才能分發他們的代碼; 2,正在分發的代碼在你的設備上不會改變。

當你在Xcode中創建你的代碼,你的代碼符號「與位於您的鑰匙串中的私鑰您的應用程序,從而「鎖定」了。爲了解鎖/解密代碼,目標設備必須有權訪問您的公鑰。設備從配置文件中包含的證書中獲取公鑰。

爲了驗證代碼保持從開發到設備的方式不變,你的證書包括一種算法,可以在你的代碼/數據轉換成所謂的「消化」。在開發者方面,數據/代碼通過算法運行,生成一個單獨的摘要,然後用私鑰鎖定。

當設備接收到應用程序包時,設備可以通過執行以下操作來確保代碼未被更改:使用私鑰解鎖摘要,通過算法運行未加密的數據(請記住,設備可以通過其prov配置文件訪問證書),並確保結果是與開發者發送的摘要相同的摘要。

除此之外,省輪廓只需要檢查手機的UDID,並確保從配置文件中的AppID的應用標識符相匹配。

我們不需要從AppStore的應用程序單獨省型材究其原因,我認爲,是因爲每個iPhone附帶使用蘋果的代碼符號分佈的應用程序的公共密鑰。

+0

隨時糾正! –

+0

我認爲Ray的testflight教程解釋了它更好,然後他的代碼簽名。 http://www.raywenderlich.com/48750/testflight-sdk-tutorial – huggie