一、關於證書
蘋果使用密文簽名技術來驗證App的合法性,不管是iOS應用還是Mac應用都需要相應的簽名證書來作為測試或發布App用。這里主要談談iOS的證書,當然,Mac的證書也基本類似。
在開發iOS應用的時候,我們需要簽名證書(開發證書
)來驗證,並允許我們在真機上對App進行測試。另外,在發布App到App store的時候,我們也需要證書(發布證書
)來做驗證。那么什么是簽名證書,如何獲取簽名證書,下面聽我慢慢道來。
首先,證書(Certificate
)是用來證明某一件事是否成立的,好比拿到的獲獎證書,是證明參加比賽並獲獎的憑證。類似,在iOS開發中,用證書來證明你是否具有某些權限或者能力來做某事。代碼簽名驗證允許我們的操作系統來判斷是誰對App進行了簽名,在安裝了Xcode后,Xcode會在項目編譯期間使用你的代碼簽名驗證,這個驗證由一個由Apple認證過的公鑰-私鑰對組成,私鑰存儲在你的鑰匙串中(Mac本地,在系統實用工具中),公鑰包含在證書(Certificates)中,證書在本地鑰匙串和開發者賬號中都有存儲,這種公鑰-私鑰驗證授權的方式在很多地方都有使用到,比如Git中的SSH協議也是通過這種方式來確認訪問權限。另外,還有一個我們可以叫做媒介證書的證書來確保我們的證書(Certificates)是經過授權而發布的。如下圖所示:
當安裝好Xcode時,媒介證書(Intermediate Certificate)就已經安裝到我們的鑰匙串中去了。通過在開發者賬號(Developer Account)和本地(Mac)都經過驗證的證書(Certificate)我們就可以利用合法的證書進行App的測試和發布了。
二、請求證書
在為App簽名前,我們需要向Apple請求簽名證書,前提是你已經注冊了開發者計划並付費。
1、打開Xcode並進入右上角Organizer窗口,選中頂部第一個名為Devices的Tab,如下圖:
2、點擊菜單欄Editor並選擇Refresh from Developer Portal
3、輸入開發者賬號用戶名和密碼並點擊“Log in”,如下圖:
4、完成后點擊“Submit Request”按鈕,此時Xcode會向開發者后台請求相應的證書,證書包括開發證書(Development)和發布證書(Distribution)。窗口如下圖所示:
5、請求完畢后,Xcode會詢問是否需要導出開發者證書,選擇“Export”導出。前面的介紹中我們提到過,私鑰(Private key)是存儲在本地的,證書(Certificate)隨着公鑰(Public key)存儲在開發者賬號后台,公鑰=私鑰對完成對一個開發者和一台開發Mac設備的授權,所以,當我們創建證書時就需要馬上備份我們的證書,當切換Mac進行作業時,我們只需要導入我們的私鑰證書即可(公鑰證書在本地和開發者中心都存儲有)。
6、導出過程中會要求你對導出的證書設置密碼,下次導入此證書時需要輸入該密碼,所以需要記住此處設置的密碼。導出的證書擴展名為.developerprofile,當下次切換Mac進行開發時,,導入該證書即可。
導入.developerprofile證書:
三、驗證證書
1、在Xcode Organizer中左側TEAMS選項卡中可以看到兩個證書顯示其中,一個是開發證書(Development),一個是發布證書(Distribution),如果開發者證書驗證授權成功,則在證書上的小人頭像會顯示綠色小鈎。
2、當請求了開發者證書后,會自動在鑰匙串中(系統實用工具-鑰匙串訪問)顯示開發證書和發布證書。當選中一個證書時,頂部的說明信息包括了證書發行商和授權信息,同樣如果看到綠色打鈎說明證書已經安裝成功。
3、在開發者后台查看開發證書,登陸Developer后台以后進入Certificates選項卡,分別在Development和Distribution選項卡中查看開發證書和發布證書。此時,證書的信息應該和在Xcode中一致。
四、回顧總結
在上面的討論中,我們介紹了簽名證書以及如何請求及驗證證書。在iOS開發中,總的來說主要包括兩個證書,一個是開發證書(Development certificates)用來驗證哪些設備能用來測試App,在開發測試階段使用這個證書。另一個是發布證書(Distribution certificates),用來驗證是否能向App store提交App審核和發布。如果是公司團隊賬號,發布證書能在具有發布權限的團隊成員間共享。以下是官方對證書類型和名字的一個列表統計,比較詳細的例舉了證書類型、名字以及簡要描述。
后記:本次關於蘋果開發者賬號證書相關的介紹就到此結束了,不足之處望大家指正和補充。下篇將主要介紹Provisioning Profile的二三事。歡迎繼續關注。