蘋果開發(fā)者中心看我就夠了(有點小研究)

在我被很多app證書虐來虐去,證書和配置把我虐的體無完膚,我決定好好研究一下蘋果開發(fā)者中心的功能好好研究一下,好了,廢話不多說,干活!

其實有很多問題是小伙伴有共鳴的,以下幾點一定要知道

  • 什么是iOS證書,它是如何與app應(yīng)用關(guān)聯(lián)的?
  • iOS開發(fā)證書和生產(chǎn)證書有何區(qū)別,如何使用的?
  • 證書與配置文件(Provisioning Profiles)是什么關(guān)系,配置文件在Xcode中如何使用?
  • 證書以及配置文件如何申請?
  • 什么是Key Pair(公鑰/私鑰)?如何與證書關(guān)聯(lián)的?
  • 簽名的作用是什么?

在這些問題回答之前,我先給小伙伴介紹一下配置頁面的基本信息


71A3219C-DB5E-4C8F-A6B4-7A90E11D5FBD.png

從上面可以看到四個關(guān)鍵東西:Certficates(證書)、Identifiers(標識符)、Devices(設(shè)備)、Provisioning Profiles(供應(yīng)配置文件),我們分別介紹這四項,其中Keys 現(xiàn)在用不上,先不講解,如果有小伙伴想了解,可以把理解的成分發(fā)到評論底下,謝謝咯

一丶 Identifiers(標識符)

Identifiers即標識符,相當于身份證,用于創(chuàng)建以下三個ID:

* App IDs
* Pass Type IDs
* Website Push IDs
* 基本用到就這幾個

其中,App ID是應(yīng)用的唯一標識符:

  • App ID和Xcode中的Bundle Identifier 是一致(Explicit)的或匹配(Wildcard)。
  • App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier (Company ID) 作為前綴 (Prefix/Seed),一般不超過255個ASCII字符
  • 用戶可在Developer MemberCenter網(wǎng)站上注冊(Register)或刪除(Delete)已注冊的App IDs。
1B7751FA-6482-43DE-8DBE-0FA66D9C0C2E.png

下來創(chuàng)建APPIDS

BAB7C796-E471-4067-9F84-6EFAFB198234.png

在“Identifiers”一欄下選擇“App IDs”,可查看所有已申請的App IDs,點擊右上“+”。
進入Register IOS App ID 界面,在"App ID Description"欄下的“name”項中輸入名稱

  • 在"Explicit App ID" 欄下的“Bundle ID”項中輸入 App ID (反域名格式,如com.company.test)
  • 這里的“Bundle ID” 對應(yīng)Xocde的中的“Bundle identifier”
  • Explicit App ID :唯一的App ID,用于唯一標識一個應(yīng)用程序。例如“com.apple.garageband”這個App ID,用于標識Bundle Identifier為"com.apple.garageband"的app。
  • Wildcard App ID:含有通配符的App ID,用于標識一組應(yīng)程序,例如“com.apple”(實際上是Application Identifier Prefix)表示所有應(yīng)用程序;而“com.apple.”可以表示Bundle Identifier 以 “com.apple.”開頭(蘋果公司)的所有應(yīng)用程序。
85E08C54-059A-46E9-89D1-6BE1E1659650.png

App Services

1E1A8FF6-5A5C-4F1D-98F7-9B5A3B0D7840.png

點擊continue - 點擊submit - 點擊done,申請“App IDs”完成,點擊 All IDs可查看申請的ID,點擊該ID

1031687-20180114222903597-2022812368.png

點擊 Edit 可對該App ID進行編輯。

二丶 Certificates(證書)

  • iOS證書是用來證明iOS App內(nèi)容(executable code)的合法性和完整性的數(shù)字證書。對于想安裝到真機或發(fā)布到AppStore的應(yīng)用程序,只有經(jīng)過簽名驗證(Signature Validated)才能確保來源可信,并且保證App內(nèi)容是完整、未經(jīng)篡改的。
  • 數(shù)字證書是一個經(jīng)證書授權(quán)中心數(shù)字簽名的包含公開密鑰擁有者信息已經(jīng)公開密鑰的文件。具有時效性,只在特定的時間段內(nèi)有效。
    iOS證書分為兩種:開發(fā)證書和生產(chǎn)證書。開發(fā)證書用于開發(fā)和調(diào)試應(yīng)用程序,可用于聯(lián)機調(diào)試。生產(chǎn)證書用來發(fā)布應(yīng)用程序。
生成證書請求文件(CSR)

可以通過KeyChain(鑰匙串)證書助理從證書頒發(fā)機構(gòu)請求證書。在iOS Dev Center中添加證書(Certificates)時,需要上傳CSR文件。
打開KeyChain(鑰匙串),點擊菜單欄“鑰匙串訪問” - “證書助理” - “從證書頒發(fā)機構(gòu)請求證書”

1031687-20180114223508176-609907064.png

填寫開發(fā)者賬號郵件和常用名稱,勾選“存儲到磁盤”

1031687-20180114223550238-1163292953.png

繼續(xù)并選擇存儲位置后,KeyChain將生成一個包含開發(fā)者身份信息的CSR(Certificate Signing Request)文件。同時,KeyChain Access - keys(密鑰)中增加一對 Public/Private Key Pair。

  • 私鑰:始終保存在Mac OS的Keychain Access中,用于簽名對外發(fā)布的App
  • 公約:一般隨證書散步出去,對App簽名進行校驗認證。
1. 申請證書

進入iOS Dev Cneter,點擊"Certificate" - "All",點擊右上角"+"(也可以點擊“Certificate”下的“Development”或“Production”,直接選擇申請開發(fā)證書或生產(chǎn)證書),進入如下界面:


1031687-20180114224153879-325435236.png
  • 例 上面顯示灰色,是因為證書過多,禁止創(chuàng)建, 你可以刪除掉一個不用的證書,即可

選擇開發(fā)證書或者生產(chǎn)證書,這里以生產(chǎn)證書為例,繼續(xù)

1031687-20180114224239863-1016249951.png

選擇App ID,即我們在“Identifiers”中創(chuàng)建的App ID,繼續(xù):

1031687-20180114224327301-530925463.png

這里介紹的是如何生成證書請求文件,即我們在“2.2.2 生成證書請求文件(CSR)”中生成的.certSigningRequest文件,然后繼續(xù):

1031687-20180114224440379-1486003290.png

這里需要添加的是你生成的證書請求文件(CSR),“Choose File”選擇生成的.certSigningRequest文件,點擊"Generate",如圖申請開發(fā)證書完成,申請生產(chǎn)證書類似,這里不再贅述。

1031687-20180114224617535-284571569.png

我們可以點擊"Download"下載該開發(fā)證書,或者在“Certificates” - All 中查看該證書,并進行下載或刪除。
我們下載證書,然后需要雙擊 導(dǎo)入 鑰匙串(KeyChain Access),然后就可以在 KeyChain Access - 證書 中查看:

1031687-20180114224754379-2139833548.png

展開安裝的證書(ios_development.cer)前面的箭頭,可以看到其對應(yīng)的私鑰,在 KeyChainAccess - "密鑰"中展開創(chuàng)建CSR時生成的Key Pair中的私鑰前面的箭頭,就可以查到包含其對應(yīng)公鑰的證書。

2. 導(dǎo)出證書

打開Keychain Access,選擇安裝成功的證書,右鍵選擇“導(dǎo)出:

1031687-20180114225029004-824253573.png

輸入名字,默認格式為.p12類型,選擇”save“

1031687-20180114225102722-454522597.png

設(shè)置密碼,點擊"OK"

1031687-20180114225129207-944974469.png
Devices
  • Device 是指運行iOS系統(tǒng)用于開發(fā)調(diào)試App的設(shè)備,每臺Apple設(shè)備使用UDID來唯一標識。
    設(shè)備的UDUD獲取就不說了
  • 開發(fā)描述文件 (Provisioning Profiles)必須綁定設(shè)備,所以在申請開發(fā)描述文件之前,必須要添加調(diào)試的設(shè)備
3. 添加調(diào)試設(shè)備

進入iOS Dev Center,”Devices“下選擇”All“,可查看所有已添加的設(shè)備,點擊右上角”+“添加新的調(diào)試設(shè)備:

1031687-20180114225447082-621007306.png

輸入”Name“和 UDID (可在xcode或者itunes中查看)后繼續(xù)

1031687-20180114225532019-1784187211.png
Provisioning Profiles

Provisioning Profile文件包含了上述所有內(nèi)容:證書、App ID、設(shè)備,后綴名為.mobileprovision

  • 一個Provisioning Profile 對應(yīng)一個Explicit App ID 或 WildCard App ID.
  • Provisioning Profile 決定Xcode用哪個證書(公鑰)/私鑰組合來簽名應(yīng)用程序,將在應(yīng)用程序打包時嵌入到.ipa包里
  • Provisioning Profile把這些信息全部打包在一起,方便我們在調(diào)試和發(fā)布程序打包時使用,這樣,只要在不同的情況下,選擇不同的Provisioning Profile文件就可以了
  • Provisioning Profile 也分為 Development 和 Distribution 兩類,有效期同 Certificate一樣。Development版本的ProvisioningProfile用于開發(fā)調(diào)試,Distribution版本的ProvisioningProfile主要用于提交App Store審核,其不指定開發(fā)測試的Devices.
  • xcode 開發(fā)時,需在 XcodeTarget - build settings - code signing - provisioning profile 下配置對應(yīng)的描述文件,然后在code signing identity 下拉可選擇 identities from profile 即Provisioning Profile中包含的Certificates
  • 在XcodeTarget - build setting code signing - provisioning profile 可選擇”Automatic“,xcode會根據(jù)該Target的”Bundle Identifier“選擇默認的配置文件及證書。
1031687-20180114230332410-1020074538.png
1.創(chuàng)建配置文件

打開iOS Dev Center,”Provisioning Profiles“ - all,點擊右上角"+",或直接點擊”Development“ 或 ”Production“

1031687-20180114230455582-1526704388.png

選擇開發(fā)或發(fā)布證書配置文件,這里以開發(fā)為例,點擊iOS AppDevelopment,繼續(xù)

1031687-20180114230543644-265696289.png

選擇對應(yīng)的App ID,繼續(xù)

1031687-20180114230612754-1552906122.png

選擇要關(guān)聯(lián)的證書,可多選

1031687-20180114230639410-230352748.png

選擇用于調(diào)試安裝的設(shè)備(最多100臺設(shè)備),如果是生產(chǎn)證書配置文件,則不會出現(xiàn)該頁面:

1031687-20180114230725926-248193747.png

輸入文件名后,點擊"Generate",配置文件創(chuàng)建成功

1031687-20180114230802097-1750366972.png

點擊"DownLoad"進行下載。
如圖下載到本地的Provisioning Profile,雙擊自動安裝到Xcode中,在XcodeTarget->Build Settings->Code Signing->Provisioning Profile中可看到此項。
code signing identity 中會默認顯示所關(guān)聯(lián)的證書文件,即創(chuàng)建該配置文件時選擇關(guān)聯(lián)的證書,可以有多個,生產(chǎn)證書配置文件與之類似.

81FDDB74-E1A3-4872-9244-E1981DD1EDEC.png

現(xiàn)在基本上都介紹完了,下來就是關(guān)系圖了

  • 在證書(Certifucates)里面的Development 是在測試的時候的證書,
  • Production 是上線時候的證書
  • 在描述配置文件(Provisioning Profiles)里面均一樣。
  • 在蒲公英上測試,至關(guān)重要。

證書 Singing 里面勾選Automatically manage siging
使用證書來配置文件打包,
不勾選,選擇描述配置文件(Provisioning Profiles)的證書來打包,可以發(fā)布蒲公英和App Store 測試(開發(fā)和生產(chǎn)環(huán)境證書隨你選擇)

B2ADC05C-84C3-4073-9818-6245F51FADF1.png
下一期,研究一下如何讓證書分享,請幫忙點贊,謝謝
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Prof...
    東了個尼閱讀 3,778評論 0 4
  • 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & Provisioning Pro...
    Damen_9527閱讀 9,518評論 0 4
  • 期末周又到了,作為一個漢語言記憶力又不好的文科生意味著,來吧!這兩周要開始暗無天日的背多分,怎么搞?確實是背了就多...
    Nicere閱讀 240評論 0 2
  • 那是一個懵懂的年紀,每個在那個年齡段的人幾乎都有自己喜歡的人,我也有。 回頭來看,我在追她的最初時候是沒那么...
    學(xué)寫字的人閱讀 316評論 0 0
  • 當你走進沙坑并在其中進行擊球的時候,你的行為會在沙子中制造出腳印和其它不平整的狀態(tài)。當你離開沙坑的時候,為了讓沙坑...
    豹走高爾夫閱讀 539評論 0 0

友情鏈接更多精彩內(nèi)容