在我被很多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)的?
- 簽名的作用是什么?
在這些問題回答之前,我先給小伙伴介紹一下配置頁面的基本信息

從上面可以看到四個關(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。

下來創(chuàng)建APPIDS

在“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)用程序。

App Services

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

點擊 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)請求證書”

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

繼續(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ù)

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

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

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

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

展開安裝的證書(ios_development.cer)前面的箭頭,可以看到其對應(yīng)的私鑰,在 KeyChainAccess - "密鑰"中展開創(chuàng)建CSR時生成的Key Pair中的私鑰前面的箭頭,就可以查到包含其對應(yīng)公鑰的證書。
2. 導(dǎo)出證書
打開Keychain Access,選擇安裝成功的證書,右鍵選擇“導(dǎo)出:

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

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

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è)備:

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

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“選擇默認的配置文件及證書。

1.創(chuàng)建配置文件
打開iOS Dev Center,”Provisioning Profiles“ - all,點擊右上角"+",或直接點擊”Development“ 或 ”Production“

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

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

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

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

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

點擊"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)證書配置文件與之類似.

現(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)境證書隨你選擇)

下一期,研究一下如何讓證書分享,請幫忙點贊,謝謝
