首先我們先來分析一下,將app裝到手機里面或者上傳到AppStore需要的證書
屏幕快照 2017-08-09 12.51.31.png
- 一般選擇Automatically manage signing這個選項,Xcode會自己創(chuàng)建和更新相關的配置,這里為了讓大家看的更清楚配置的信息,我選擇手動配置這些。
- 如圖你需要 Provisioning Profile配置文件,開發(fā)者賬號,和開發(fā)證書(簽名證書),這3者必須是配套使用的。
OK,我們首先了解一下數字證書的概念:
- 數字證書是由證書授權中心發(fā)行的,人們可以在網上用它來識別對方的身份。
- 數字證書是一個經證書授權中心簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。簡單的證書包含一個公開密鑰,名稱以及證書授權中心的數字簽名。
- 數字證書具有時效性,過期失效。
iOS證書(簽名證書)的概念和用處
- iOS證書是用來證明iOS App的內容的合法性和完整性的證書。App想要安裝到手機或者發(fā)布到AppStore的應用程序,必須經過簽名認證才能確保來源可信。
- iOS證書分為Development 和Product(Distribution)。一個在調試的時候使用,一個在發(fā)布的時候使用,下載的時候只要在蘋果開發(fā)者賬號里面選擇對應的就可以了。
iOS證書頒發(fā)機構是什么?
- 在安裝Xcode的時候,系統(tǒng)將會自動安裝AppleWWDRCA.cer這個中間證書,它就是 iOS(開發(fā))證書的根證書。
- AppleWWDRCA相當于戶籍科,AppleWWDRCA.cer就相當于身份證。
- 如果你的mac沒有這個證書或者失效了,請自行百度安裝。
注:申請 iOS開發(fā)證書就相當于為app申請一個證明這個app合法身份的一個身份證書。
接下來我們開始申請證書:
- 1.直接通過Keychain證書助理從證書頒發(fā)機構請求證書:
屏幕快照 2017-08-09 11.22.35.png
屏幕快照 2017-08-09 10.54.13.png
這個生成的文件是CSR文件,這個文件包含開發(fā)者身份信息,同時在生成CSR文件時電腦里面的Keychain Access|key里面將會新增一對Public/Private Key Pair。
Private Key:一直保存在Mac OS的Keychain Acess中,用于簽名對外發(fā)布的App。(p12文件中)
Public Key:一般隨著證書(隨著Provisioning Profile,app)對外公布,對App簽名進行校驗認證。用戶必須保護好本地的Private Key,以防偽冒。(CSR文件中)
如何導出導出p12文件?當你生成的證書(Certificates)需要在別的電腦使用的時候,即不是生成CSR文件的電腦的時候,需要將p12文件和證書一起傳到別的電腦使用。
屏幕快照 2017-08-09 12.16.16.png
屏幕快照 2017-08-09 10.26.13.png
生成Certificates開發(fā)證書:
- 登陸開發(fā)者網站,利用上一步申請的CSR文件生成Certificates開發(fā)證書。這個證書即是app中需要使用的簽名證書。
屏幕快照 2017-08-09 12.32.47.png
屏幕快照 2017-08-09 12.36.58.png
- 下載證書,然后雙擊證書安裝到你的鑰匙串中,確保保存了你的公鑰和私鑰的備份的安全。
簽名證書講完了,下面來了解一下Provisioning Profile配置文件
- 配置文件由3部分組成:證書,AppID和設備。
- 證書:Xcode決定用哪個證書(公鑰/私鑰)來簽署應用程序;
- AppID:ProductID,用于標示一個或者一組app。
- 設備:app支持哪些設備使用。
Provisioning Profile決定了Xcode決定用哪個證書(公鑰/私鑰)來簽署應用程序,將應用程序打包時嵌入到.ipa包里。安裝應用程序時,Provisioning Profile將被拷貝到iOS設備中,運行iOS的設備也通過它來認證安裝的程序。
打包或者在真機上運行一個app的過程:
- 首先,需要指明它的 App ID,并且驗證Bundle ID是否一致;
- 其次。需要對證書對應的私鑰來進行簽名,用于標識這個APP是否合法,安全,完整的;
- 然后,如果是真機測試,需要確認這臺設備是否授權該app。
Provisioning Profile將這些信息全部打包到一起,方便我們在調試和發(fā)布的時候使用。這樣只要在不同的情況下選擇不同的Provisioning Profile文件就可以了。
Provisioning Profile也分為2類,Development 和Product(Distribution),有效期和Certificates一樣。
最后我們來了解一下證書和簽名到底是怎樣保證安全可靠性?
屏幕快照 2017-08-09 13.40.04.png
屏幕快照 2017-08-09 13.46.23.png
- Xcode中的Code Signing Identity(entitlementb certificate)和 Provisioning Profile匹配,并且配置的Certificate必須在本機的Keychain Acess中存在對應的Public/Private Key Pair,否則編譯會報錯。