iOS開發證書與配置文件的使用

前提

眾所周知,開發iOS應用必須要有iOS證書(Certificates)和配置文件(Provisioning Profiles),那么問題來了:

1.什么是iOS證書,它是如何與app應用關聯的?
2.iOS開發證書和生產證書有何區別,如何使用的?
3.證書與配置文件(Provisioning Profiles)是什么關系,配置文件在Xcode中如何使用?
4.證書以及配置文件如何申請?
5.什么是Key Pair(公鑰/私鑰)?如何與證書關聯的?
6.簽名的作用是什么?

準備工作

如果想要進行iOS開發,首先要具備下面一些條件:
1.首先,要有蘋果開發者賬號(Apple Developer Account)

  • 只有擁有開發者賬號,才能申請開發/發布證書及相應配置文件。
  • 開發者賬號分為Individual(個人或公司開發者賬號$99)和Company/Organization(企業開發者賬號$299)兩種類型。

2.若要進行真機調試,必須至少擁有一臺裝有Mac OS X/Xcode的Mac開發機(iMac or MacBook)

1.登陸iOS Dev Center

如果已經擁有蘋果開發者賬號,直接登錄蘋果開發者中心申請開發證書。

  • 登錄界面


    F323D07E-B16C-43D6-AF31-7B681C9EFCA7.png
  • 選擇“Certificates, Identifiers & Profiles”項進入后顯示下面界面,iOS Apps一欄中任意選擇一項
EB52CB59-2C2C-4DB8-8F4E-F9F3F1BB28FB.png
  • 進入到如圖界面

5F9C1BE5-46DB-4023-AD0E-1F717AEB80AE.png

下面就這四項,分別介紹

2.Certificates(證書),Identifiers(標識符),Devices(設備),Provisioning Profiles(供應配置文件)

為了方便理解,我們把順序打亂,分別介紹這四項。

2.1. Identifiers

Identifiers即標識符,相當于身份證,用于創建以下三個ID:
App IDs
Pass Type IDs
Website Push IDs

2.1.1.關于App IDs

其中,App ID是應用的唯一標識符:

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

2.1.2.創建App ID

  • 在“ Identifiers”一欄下選擇“App IDs”,可查看所有已申請的App IDs,點擊右上“+”
1EF8FB56-E265-4B97-A8BE-327841B86814.png
  • 進入Register iOS App ID界面,在“App ID Description”欄下的“Name”項中輸入名稱


    72E71207-FB31-4BC6-8E03-7EDADE9A82EC.png
  • 在“Explicit App ID”欄下的“Bundle ID”項中輸入App ID(反域名格式,如:com.company.test)

  • 這里“Bundle ID”對應Xcode中的“Bundle identifier”

  • Explicit App ID:唯一的App ID,用于唯一標識一個應用程序。例如“com.apple.garageband”這個App ID,用于標識Bundle Identifier為“com.apple.garageband”的App。

  • Wildcard App ID:含有通配符的App ID,用于標識一組應用程序。例如“”(實際上是Application Identifier Prefix)表示所有應用程序;而“com.apple.”可以表示Bundle Identifier以“com.apple.”開頭(蘋果公司)的所有應用程序。

    378CCEC6-8B91-4CD8-AD2D-027A49B8AA02.png

  • 在“App Services”欄下選擇應用要使用到的服務(如要使用推送功能,勾選“Push Notifications”)

423D58C6-2535-4726-98C6-500658BD1141.png
  • 點擊continue->點擊submit->點擊done,申請App IDs完成。點擊All IDs可查看申請的ID,點擊該ID
453733A7-ABE7-4696-95EE-45168BD75172.png
  • 點擊“Edit”可對該App ID進行編輯

2.2. Certificates

2.2.1. 描述

iOS證書是用來證明iOS App內容(executable code)的合法性和完整性的數字證書。對于想安裝到真機或發布到AppStore的應用程序(App),只有經過簽名驗證(Signature Validated)才能確保來源可信,并且保證App內容是完整、未經篡改的。

  • 數字證書是一個經證書授權中心數字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。具有時效性,只在特定的時間段內有效。
  • iOS證書分兩種:開發證書(Development)生產證書(Production)
  1. 開發證書用于開發和調試應用程序,可用于聯機調試。
  1. 生產證書用來發布應用程序。

2.2.2. 生成證書請求文件(CSR)

可以通過Keychain(鑰匙串)證書助理從證書頒發機構請求證書。在iOS Dev Center中添加證書(Certificates)時,需要上傳改CSR文件。

  • 打開Keychain(鑰匙串),點擊菜單欄“鑰匙串訪問”->“證書助理”->“從證書頒發機構請求證書”
64A49729-3C03-4F8F-9910-3E9688235B86.png
  • 填寫開發賬號郵件和常用名稱,勾選“存儲到磁盤”。
096ED51F-A832-4DA5-BBB0-FEBA17BE4764.png
  • 繼續并選擇存儲位置后,Keychain將生成一個包含開發者身份信息的CSR(Certificate Signing Request)文件。同時,Keychain Access->Keys(密鑰)中增加一對Public/Private Key Pair。
DAB324D4-D886-4097-A54D-1E37038A87A1.png
  1. 私鑰(private key)始終保存在Mac OS的Keychain Access中,用于簽名(CodeSign)對外發布的App。
  1. 公鑰(public key)一般隨證書散布出去,對App簽名進行校驗認證。

2.2.3.申請證書

  • 進入iOS Dev Center,“Certificate”->“All”,點擊右上角“+”(也可直接點擊“Certificate”下的“Development”或“Production”,直接選擇申請開發證書或生產證書),進入如下界面:
F5FABF55-157A-47BB-B3A3-3A0125ABAFDC.png
  • 選擇開發證書或者生產證書,這里以生產證書為例,繼續
DB782EBE-01C6-48A1-A83E-A6B6CAC5D349.png
  • 選擇App ID,即我們在“ Identifiers”中創建的App ID,繼續
62F40B5F-4FA9-49C3-B707-46EADD3EC28A.png
  • 這里介紹如何生產證書請求文件,即我們在“2.2.2. 生成證書請求文件(CSR)”中生成的.certSigningRequest文件,這里繼續
1A7B633E-B61B-4E63-8EEB-B0D15D0B053E.png
  • 這里需要添加生成的證書請求文件(CSR),“Choose File”選擇生成的.certSigningRequest文件,點擊“Generate”,如圖申請開發證書完成,申請生產證書流程類似,這里不再贅述。
9D2FC3A0-7FC7-43A9-8C3D-B60F108528ED.png
  • 我們可以點擊“Download”下載該開發證書,或者在“Certificates”->“All”中查看該證書,并進行下載或刪除,如圖:
A9690706-6620-4A3D-9B9A-D727EFFC9179.png
  • 下載證書,雙擊導入Keychain Access,可在Keychain Access->“證書”中查看
屏幕快照 2015-12-06 下午5.40.06.png
  • 展開安裝的證書(ios_development.cer)前面的箭頭,可以看到其對應的私鑰。在KeychainAccess->“密鑰”中展開創建CSR時生成的Key Pair中的私鑰前面的箭頭,可以查看到包含其對應公鑰的證書.

2.2.4.導出證書

  • 打開Keychain Access,選擇安裝成功的證書,右鍵選擇“導出”
1EF53825-B4C4-43B6-A0D8-536FE32AEB81.png
  • 輸入名字,默認格式為.p12類型,選擇“Save”
72BA1D21-C005-4A7B-81B6-3B8ADC62872D.png
  • 設置密碼,點擊“OK”
47AF6037-0C4F-4960-9AD8-75C5EE34CA6F.png

2.3. Devices

  1. Device是指運行iOS系統用于開發調試App的設備(即蘋果設備)。每臺Apple設備使用UDID來唯一標識。
  1. 設備的UDID可通過iTunes->Summary或者Xcode->Window->Devices獲取。
  2. 開發描述文件(Provisioning Profiles)必須綁定設備,所以在申請開發描述文件之前,必須要添加調試的設備(已添加可跳過)。

2.3.1.添加調試設備

  • 進入iOS Dev Center,“Devices”下選擇“All",可查看所有已添加的設備,點擊右上角“+”添加新的調試設備
9A9CA0B2-F320-4F9F-B51A-B0C250FECC63.png
  • 輸入“Name”和UDID(可在xcode或者iTunes中查看)后,繼續
ADF3D2DB-09B6-42D2-899B-D92D0E6163B5.png
  • 確認信息后,點擊注冊,完成添加。

2.3. Provisioning Profiles

2.3.1 概念

Provisioning Profile文件包含了上述所有內容:證書App ID設備,后綴名為.mobileprovision。

  1. 一個Provisioning Profile對應一個Explicit App ID或Wildcard App ID。
  1. Provisioning Profile決定Xcode用哪個證書(公鑰)/私鑰組合(Key Pair/Signing Identity)來簽名應用程序(Signing Product),將在應用程序打包時嵌入到.ipa包里。
  2. Provisioning Profile把這些信息全部打包在一起,方便我們在調試和發布程序打包時使用。這樣,只要在不同的情況下選擇不同的Provisioning Profile文件就可以了。
  3. Provisioning Profile也分為Development和Distribution兩類,有效期同Certificate一樣。Development版本的ProvisioningProfile用于開發調試,Distribution版本的ProvisioningProfile主要用于提交App Store審核,其不指定開發測試的Devices。
  4. xcode開發時,需在XcodeTarget->Build Settings->Code Signing->Provisioning Profile下配置對應的描述文件(Provisioning Profiles),然后在Code Signing Identity下拉可選擇Identities from Profile "..."(即Provisioning Profile中包含的Certificates)。
  5. 在XcodeTarget->Build Settings->Code Signing->Provisioning Profile可選擇“Automatic”,xcode會根據該Target的“Bundle identifier”選擇默認的配置文件及證書。
3DAD606D-8BDC-4A7E-8644-5A7CF27DF3B4.png

2.3.2. 創建配置文件

  • 打開iOS Dev Center,“Provisioning Profiles”->“All”,點擊右上角“+”(也可直接點擊“Development”或“Production”)
AC661BDE-DE94-487E-9A71-4C436224CB5D.png
  • 選擇開發或發布證書配置文件,這里以開發為例,點擊iOS App Development,繼續
0AB45E72-821D-4F5C-84F8-CA19E97CC565.png
  • 選擇對應的App ID,繼續
F0C2D519-CA90-4286-A0AB-3A42DB4EADA0.png
  • 選擇要關聯的證書,可多選,繼續
50725524-699D-400B-B1C0-3C5024774F95.png
  • 選擇用于調試安裝的設備(最多100臺設備),如果是生產證書配置文件,則不會出現該頁面(生產證書用于發布,不能進行開發調試),繼續看到以下界面
3FD54433-014F-4861-803F-994FFACCC910.png
  • 輸入文件名后,點擊“Generate”,配置文件創建成功
56C9B53B-666E-4173-8083-D1857EB58CD4.png
  • 可點擊“Download”進行下載,或者在“Provisioning Profiles”->“All”查看所有配置文件,并進行下載或刪除等操作。
6F158A64-B819-476F-86EC-A4BA6EF1E3D2.png
  • 如圖下載到本地的Provisioning Profile,雙擊自動安裝到xcode中,在XcodeTarget->Build Settings->Code Signing->Provisioning Profile中可看到此項。
F5A42FB8-44EB-4A5C-B53C-3F3499CF883D.png
  • 如圖,選擇此項配置文件,“Code Signing Identity”中會默認顯示所關聯的證書文件(即創建該配置文件時選擇關聯的證書,可有多個)
3E6BFDF4-28E2-49DF-A31E-0FF507A1604F.png
  • 生產證書配置文件與之類似,不再贅述。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,505評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,556評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,463評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,009評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,778評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,218評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,281評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,436評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,969評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,795評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,993評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,537評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,229評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,659評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,917評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,687評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,990評論 2 374

推薦閱讀更多精彩內容