前言:
iOS應(yīng)用以流暢和安全著稱,其中的安全性主要依靠的就是蘋果開發(fā)中使用的一套證書流程。證書是用來給應(yīng)用程序簽名的,只有經(jīng)過簽名的應(yīng)用程序才能保證他的來源是可信任的,并且代碼是完整的,未經(jīng)修改的。證書初次使用會感覺流程很復(fù)雜,其實(shí)對于流程理解了就會覺得簡單了。
模擬流程
在講解之前,我先用現(xiàn)實(shí)中的一件事做個比方,這樣理解起來簡單一點(diǎn)。比如:我要成立一個汽車廠。
- 按照規(guī)定,我要先拿到經(jīng)營許可證,然后拿著經(jīng)營許可證去政府的車輛審批部門去申請制造汽車的資質(zhì)證明書,而車輛審批部門會給我發(fā)倆個資質(zhì)證明書,一個搞內(nèi)部研發(fā)的資質(zhì)證明書,一個可以投入市場的資質(zhì)證明書,都是只有一年期限。
- 拿到資質(zhì)證明書后,才可以開始汽車制造。首先我還必須要注冊一個商標(biāo),這個商標(biāo)要登記在車輛審批部門,防止別人偽造。
- 然后我拿著研發(fā)資質(zhì)證明書,就可以進(jìn)行研發(fā)了,經(jīng)過科(加)學(xué)(班)規(guī)(加)范(點(diǎn))的研發(fā),車子終于成型,我想投入市場,但是為了安全,最好經(jīng)過測試合格后才可以。
- 這時候我可以進(jìn)行內(nèi)部測試,審批部門每年會給我100個名額,我可以最多找100個人測試,這一百個人不必非要在授權(quán)的門店里買車,可以直接試車。需要注意的是,我在進(jìn)行內(nèi)部試車的時候,也分倆種情況,一種是在我自己規(guī)劃的場地進(jìn)行試車,另一種就是在外面的正常的公路上進(jìn)行試車,但都是在沒有檢驗合格證的情況下試車的。
- 試過之后,我就可以拿著投入市場的資質(zhì)證明書給車檢部門發(fā)出申請,然后他們要對我的車子進(jìn)行檢驗審核,沒有問題了,給我一個檢驗合格證,我就可以正式投入市場了。
- 投入市場后,來買車的人會看到我的資質(zhì)證明書和我注冊的商標(biāo)以及檢驗合格證就可以確定這是正品,就可以放心來買了。
- 如果我想在車上安裝導(dǎo)航系統(tǒng),同樣的也要申請倆個證書,一個開發(fā)導(dǎo)航資質(zhì)證明書,一個發(fā)布導(dǎo)航資質(zhì)證明書,同樣是需要和商標(biāo)綁在一起,一年期限。當(dāng)然我也可以委托第三方廠家給我開發(fā),只要我提供倆個資質(zhì)證明書即可。
實(shí)際開發(fā)流程
接下來,就回到iOS中的開發(fā)流程中來。
- 首先我需要一個開發(fā)者賬號,分為個人賬號(Individual) 和 公司團(tuán)隊賬號(Company/Organization)和企業(yè)賬號(Enterprise)三種類型,個人和公司團(tuán)隊都是99美元一年,可以發(fā)布到AppStore上,每年可以有100個蘋果的iOS設(shè)備測試。企業(yè)賬號是299美元一年,但是不能發(fā)布到App Store,只能企業(yè)內(nèi)部應(yīng)用,蘋果的iOS設(shè)備數(shù)量不限制。就好比我生產(chǎn)的車不能發(fā)布到市場上,只能在自己的地盤上試驗,一旦上路就是黑車了,被檢查到會被吊銷營業(yè)資格。
-
有了賬號,就可以申請經(jīng)營許可證了,也就是通過Keychain(鑰匙串)的證書助理從證書頒發(fā)機(jī)構(gòu)請求證書。
455017-e84ef019ef4984b2.png
結(jié)果keychain 將生成一個包含開發(fā)者身份信息和公鑰的CSR(Certificate Signing Request)文件。私鑰 private key始終保存在 Mac OS 的 Keychain Access 中,用于簽名(CodeSign)本機(jī)對外發(fā)布的 App;公鑰 public key 一般隨證書散布出去,對 App 簽名進(jìn)行校驗認(rèn)證。用戶必須妥善保存本地 Keychain 中的 private key,以防偽冒。
20150114091003101.jpg -
使用CSR文件到開發(fā)者中心申請證書。首先要了解幾個概念,Certificates(證書),Identifiers(標(biāo)識符),Devices(設(shè)備),Provisioning Profiles(描述文件)。頁面如圖所示:
Snip20160808_2.pngCertificates(證書)就是到車輛審批部門去申請的資質(zhì)證明書,Identifiers(標(biāo)識符)就是車的商標(biāo),Devices(設(shè)備)就是可以試車的那100個人,Provisioning Profiles(描述文件)就是包含了證書,標(biāo)識符和設(shè)備的文件,也就是客戶試車的時候的憑證。申請證書頁面如圖:
其中,Development就是開發(fā)證書,Production是發(fā)布證書,細(xì)分起來,發(fā)布證書分為AppStore發(fā)布證書和Ad Hoc發(fā)布證書,AppStore證書就是提交審核時用到的證書,也就類似于投入市場的資質(zhì)證明書,Ad Hoc證書可以模擬生產(chǎn)環(huán)境,類似于在外面的正常的公路上試車那種類型。最后生成成功后download下來并雙擊導(dǎo)入鑰匙串。455017-7acbae0d954a0580.png在多臺機(jī)器上共享證書,在 Keychain Access|Certificates 中選中欲導(dǎo)出的 certificate 或其下 private key,右鍵 Export導(dǎo)出p12文件,其他 Mac 機(jī)器上雙擊 Certificates.p12(如有密碼需輸入密碼)即可安裝該共享證書。20150114091440719.jpg - 接下來去申請一個App ID,也就是去申請一個汽車商標(biāo)。在“ Identifiers”一欄下選擇“App IDs”,可查看所有已申請的App IDs,點(diǎn)擊右上“+”,需要注意,App ID一般是反域名格式,如:com.company.test。在“App Services”欄下選擇應(yīng)用使用到的服務(wù)(如要使用推送功能,勾選“Push Notifications”)。
- 添加調(diào)試設(shè)備,也就是可以試車的人員,使用UDID來標(biāo)識每一臺設(shè)備都有唯一性,注意,一年只有100個名額,即使刪除掉也算用去了一個名額。
-
添加描述文件(Provisioning Profile),描述文件和證書的環(huán)境相對應(yīng)。描述文件就類似于售車時,給客戶列出的一系列合法文件證明。
Snip20160808_3.png
1.Provisioning Profile決定Xcode用哪個證書(公鑰)/私鑰組合(Key Pair/Signing Identity)來簽名應(yīng)用程序(Signing Product),將在應(yīng)用程序打包時嵌入到.ipa包里。
2.Provisioning Profile把這些信息全部打包在一起,方便我們在調(diào)試和發(fā)布程序打包時使用。這樣,只要在不同的情況下選擇不同的Provisioning Profile文件就可以了。
3.Provisioning Profile也分為Development和Distribution兩類,有效期同Certificate一樣。Development版本的ProvisioningProfile用于開發(fā)調(diào)試,Distribution版本的ProvisioningProfile主要用于提交App Store審核,其不指定開發(fā)測試的Devices。
4.Xcode 將全部供應(yīng)配置文件(包括用戶手動下載安裝的和 Xcode 自動創(chuàng)建的Provisioning Profile放在目錄 [~/Library/MobileDevice/Provisioning Profiles] 下。
生成成功后的Provisioning Profile下載到本地,雙擊會自動安裝到xcode中。
7.最后,如果需要開通推送功能,還需要再申請倆個推送證書,流程同開發(fā)證書一樣。也可以使用第三方推送平臺,但是得提供倆個環(huán)境的推送證書。

一切準(zhǔn)備完畢,這時候就可以打包提交到AppStore進(jìn)行審核了,類似于車檢部門進(jìn)行審核,審核通過后發(fā)到AppStore市場上,就類似于拿到了檢驗合格證了。
iOS開發(fā)中的證書使用的流程就是這樣了,希望本文能幫助到你更好的理解iOS開發(fā)。
參考:
iOS Provisioning Profile(Certificate)與Code Signing詳解
蘋果IOS開發(fā)者賬號總結(jié)
iOS開發(fā)證書與配置文件的使用





