基于iOS開(kāi)發(fā)證書(shū)和配置文件的使用
提示:之前只是根據(jù)網(wǎng)上的流程完成了iOS項(xiàng)目的發(fā)布過(guò)程,對(duì)于證書(shū)和配置文件仍是一頭霧水,這里參照別人的文章,簡(jiǎn)單了解一下,畢竟以后用的著。
這里有幾個(gè)問(wèn)題:
•什么是iOS證書(shū),它是如何與app應(yīng)用關(guān)聯(lián)的?
•iOS開(kāi)發(fā)證書(shū)和生產(chǎn)證書(shū)有何區(qū)別,如何使用的?
•證書(shū)與配置文件(Provisioning Profiles)是什么關(guān)系,配置文件在Xcode中如何使用?
•證書(shū)以及配置文件如何申請(qǐng)?
•什么是Key Pair(公鑰/私鑰)?如何與證書(shū)關(guān)聯(lián)的?
•簽名的作用是什么?
1. 準(zhǔn)備工作:
如果想要進(jìn)行iOS開(kāi)發(fā),首先要具備下面一些條件:
1.1 首先要有蘋(píng)果開(kāi)發(fā)賬號(hào)(Apple Developer Acount)•只有擁有開(kāi)發(fā)者賬號(hào),才能申請(qǐng)開(kāi)發(fā)/發(fā)布證書(shū)及相應(yīng)配置文件。
•開(kāi)發(fā)者賬號(hào)個(gè)人或公司開(kāi)發(fā)者賬號(hào)$99和企業(yè)開(kāi)發(fā)者賬號(hào)$299兩種類(lèi)型。
1.2 若要進(jìn)行真機(jī)調(diào)試,必須至少擁有一臺(tái)MAC電腦。
2. 登錄iOS Dev Center
如果已經(jīng)擁有蘋(píng)果開(kāi)發(fā)者賬號(hào),直接登錄蘋(píng)果開(kāi)發(fā)者中心申請(qǐng)開(kāi)發(fā)證書(shū)。
進(jìn)入到證書(shū)申請(qǐng)界面:
從上面可以看到四個(gè)關(guān)鍵東西:Certficates(證書(shū))、Identifiers(標(biāo)識(shí)符)、Devices(設(shè)備)、Provisioning Profiles(供應(yīng)配置文件),我們分別介紹這四項(xiàng)。
2.1 Identifiers(標(biāo)識(shí)符)
Identifiers即標(biāo)識(shí)符,相當(dāng)于身份證,用于創(chuàng)建以下三個(gè)ID:
•App IDs
•Pass Type IDs
•Website Push IDs
2.1.1 關(guān)于App IDs
其中,App ID是應(yīng)用的唯一標(biāo)識(shí)符:
•App ID和Xcode中的Bundle Identifier 是一致(Explicit)的或匹配(Wildcard)。
•App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier (Company ID) 作為前綴 (Prefix/Seed),一般不超過(guò)255個(gè)ASCII字符
•用戶(hù)可在Developer MemberCenter網(wǎng)站上注冊(cè)(Register)或刪除(Delete)已注冊(cè)的App IDs。
2.1.2 創(chuàng)建App ID
在“Identifiers”一欄下選擇“App IDs”,可查看所有已申請(qǐng)的App IDs,點(diǎn)擊右上“+”。
進(jìn)入Register IOS App ID 界面,在"App ID Description"欄下的“name”項(xiàng)中輸入名稱(chēng)
填寫(xiě)B(tài)undle ID:
•在"Explicit App ID" 欄下的“Bundle ID”項(xiàng)中輸入 App ID (反域名格式,如com.company.test)
•這里的“Bundle ID” 對(duì)應(yīng)Xocde的中的“Bundle identifier”
•Explicit App ID :唯一的App ID,用于唯一標(biāo)識(shí)一個(gè)應(yīng)用程序。例如“com.apple.garageband”這個(gè)App ID,用于標(biāo)識(shí)Bundle Identifier為"com.apple.garageband"的app。
•Wildcard App ID:含有通配符的App ID,用于標(biāo)識(shí)一組應(yīng)程序,例如“com.apple”(實(shí)際上是Application Identifier Prefix)表示所有應(yīng)用程序;而“com.apple.”可以表示Bundle Identifier 以 “com.apple.”開(kāi)頭(蘋(píng)果公司)的所有應(yīng)用程序。
在"App Services"欄下選擇應(yīng)用要使用到的服務(wù)(如果要使用推送功能,勾選“Push Notifications”)。
點(diǎn)擊continue - 點(diǎn)擊submit - 點(diǎn)擊done,申請(qǐng)“App IDs”完成,點(diǎn)擊 All IDs可查看申請(qǐng)的ID,點(diǎn)擊該ID
點(diǎn)擊 Edit 可對(duì)該App ID進(jìn)行編輯。
2.2 Certificates2.2.1 描述
iOS證書(shū)是用來(lái)證明iOS App內(nèi)容(executable code)的合法性和完整性的數(shù)字證書(shū)。對(duì)于想安裝到真機(jī)或發(fā)布到AppStore的應(yīng)用程序,只有經(jīng)過(guò)簽名驗(yàn)證(Signature Validated)才能確保來(lái)源可信,并且保證App內(nèi)容是完整、未經(jīng)篡改的。
•數(shù)字證書(shū)是一個(gè)經(jīng)證書(shū)授權(quán)中心數(shù)字簽名的包含公開(kāi)密鑰擁有者信息已經(jīng)公開(kāi)密鑰的文件。具有時(shí)效性,只在特定的時(shí)間段內(nèi)有效。
•iOS證書(shū)分為兩種:開(kāi)發(fā)證書(shū)和生產(chǎn)證書(shū)。開(kāi)發(fā)證書(shū)用于開(kāi)發(fā)和調(diào)試應(yīng)用程序,可用于聯(lián)機(jī)調(diào)試。生產(chǎn)證書(shū)用來(lái)發(fā)布應(yīng)用程序。
2.2.2 生成證書(shū)請(qǐng)求文件(CSR)
可以通過(guò)KeyChain(鑰匙串)證書(shū)助理從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū)。在iOS Dev Center中添加證書(shū)(Certificates)時(shí),需要上傳CSR文件。
打開(kāi)KeyChain(鑰匙串),點(diǎn)擊菜單欄“鑰匙串訪(fǎng)問(wèn)” - “證書(shū)助理” - “從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū)”
填寫(xiě)開(kāi)發(fā)者賬號(hào)郵件和常用名稱(chēng),勾選“存儲(chǔ)到磁盤(pán)”
繼續(xù)并選擇存儲(chǔ)位置后,KeyChain將生成一個(gè)包含開(kāi)發(fā)者身份信息的CSR(Certificate Signing Request)文件。同時(shí),KeyChain Access - keys(密鑰)中增加一對(duì) Public/Private Key Pair。
•私鑰:始終保存在Mac OS的Keychain Access中,用于簽名對(duì)外發(fā)布的App
•公約:一般隨證書(shū)散步出去,對(duì)App簽名進(jìn)行校驗(yàn)認(rèn)證。
2.2.3 申請(qǐng)證書(shū)
進(jìn)入iOS Dev Cneter,點(diǎn)擊"Certificate" - "All",點(diǎn)擊右上角"+"(也可以點(diǎn)擊“Certificate”下的“Development”或“Production”,直接選擇申請(qǐng)開(kāi)發(fā)證書(shū)或生產(chǎn)證書(shū)),進(jìn)入如下界面:
選擇開(kāi)發(fā)證書(shū)或者生產(chǎn)證書(shū),這里以生產(chǎn)證書(shū)為例,繼續(xù):
選擇App ID,即我們?cè)凇癐dentifiers”中創(chuàng)建的App ID,繼續(xù):
這里介紹的是如何生成證書(shū)請(qǐng)求文件,即我們?cè)凇?.2.2 生成證書(shū)請(qǐng)求文件(CSR)”中生成的.certSigningRequest文件,然后繼續(xù):
這里需要添加的是你生成的證書(shū)請(qǐng)求文件(CSR),“Choose File”選擇生成的.certSigningRequest文件,點(diǎn)擊"Generate",如圖申請(qǐng)開(kāi)發(fā)證書(shū)完成,申請(qǐng)生產(chǎn)證書(shū)類(lèi)似,這里不再贅述。
我們可以點(diǎn)擊"Download"下載該開(kāi)發(fā)證書(shū),或者在“Certificates” - All 中查看該證書(shū),并進(jìn)行下載或刪除。
我們下載證書(shū),然后需要雙擊 導(dǎo)入 鑰匙串(KeyChain Access),然后就可以在 KeyChain Access - 證書(shū) 中查看:
展開(kāi)安裝的證書(shū)(ios_development.cer)前面的箭頭,可以看到其對(duì)應(yīng)的私鑰,在 KeyChainAccess - "密鑰"中展開(kāi)創(chuàng)建CSR時(shí)生成的Key Pair中的私鑰前面的箭頭,就可以查到包含其對(duì)應(yīng)公鑰的證書(shū)。
2.2.4 導(dǎo)出證書(shū)
打開(kāi)Keychain Access,選擇安裝成功的證書(shū),右鍵選擇“導(dǎo)出:
輸入名字,默認(rèn)格式為.p12類(lèi)型,選擇”save“
設(shè)置密碼,點(diǎn)擊"OK"
2.3 Devices
•Device 是指運(yùn)行iOS系統(tǒng)用于開(kāi)發(fā)調(diào)試App的設(shè)備,每臺(tái)Apple設(shè)備使用UDID來(lái)唯一標(biāo)識(shí)。
•設(shè)備的UDUD獲取就不說(shuō)了
•開(kāi)發(fā)描述文件 (Provisioning Profiles)必須綁定設(shè)備,所以在申請(qǐng)開(kāi)發(fā)描述文件之前,必須要添加調(diào)試的設(shè)備
2.3.1 添加調(diào)試設(shè)備
進(jìn)入iOS Dev Center,”Devices“下選擇”All“,可查看所有已添加的設(shè)備,點(diǎn)擊右上角”+“添加新的調(diào)試設(shè)備:
輸入”Name“和 UDID (可在xcode或者itunes中查看)后繼續(xù)
確認(rèn)信息后,點(diǎn)擊注冊(cè),完成添加。
2.4 Provisioning Profiles2.4.1 概念
Provisioning Profile文件包含了上述所有內(nèi)容:證書(shū)、App ID、設(shè)備,后綴名為.mobileprovision
•一個(gè)Provisioning Profile 對(duì)應(yīng)一個(gè)Explicit App ID 或 WildCard App ID.
•Provisioning Profile 決定Xcode用哪個(gè)證書(shū)(公鑰)/私鑰組合來(lái)簽名應(yīng)用程序,將在應(yīng)用程序打包時(shí)嵌入到.ipa包里
•Provisioning Profile把這些信息全部打包在一起,方便我們?cè)谡{(diào)試和發(fā)布程序打包時(shí)使用,這樣,只要在不同的情況下,選擇不同的Provisioning Profile文件就可以了
•Provisioning Profile 也分為 Development 和 Distribution 兩類(lèi),有效期同 Certificate一樣。Development版本的ProvisioningProfile用于開(kāi)發(fā)調(diào)試,Distribution版本的ProvisioningProfile主要用于提交App Store審核,其不指定開(kāi)發(fā)測(cè)試的Devices.
•xcode 開(kāi)發(fā)時(shí),需在 XcodeTarget - build settings - code signing - provisioning profile 下配置對(duì)應(yīng)的描述文件,然后在code signing identity 下拉可選擇 identities from profile 即Provisioning Profile中包含的Certificates
•在XcodeTarget - build setting code signing - provisioning profile 可選擇”Automatic“,xcode會(huì)根據(jù)該Target的”Bundle Identifier“選擇默認(rèn)的配置文件及證書(shū)。
2.4.2 創(chuàng)建配置文件
打開(kāi)iOS Dev Center,”P(pán)rovisioning Profiles“ - all,點(diǎn)擊右上角"+",或直接點(diǎn)擊”Development“ 或 ”P(pán)roduction“
選擇開(kāi)發(fā)或發(fā)布證書(shū)配置文件,這里以開(kāi)發(fā)為例,點(diǎn)擊iOS AppDevelopment,繼續(xù)
選擇對(duì)應(yīng)的App ID,繼續(xù)
選擇要關(guān)聯(lián)的證書(shū),可多選
選擇用于調(diào)試安裝的設(shè)備(最多100臺(tái)設(shè)備),如果是生產(chǎn)證書(shū)配置文件,則不會(huì)出現(xiàn)該頁(yè)面:
輸入文件名后,點(diǎn)擊"Generate",配置文件創(chuàng)建成功:
點(diǎn)擊"DownLoad"進(jìn)行下載。
如圖下載到本地的Provisioning Profile,雙擊自動(dòng)安裝到Xcode中,在XcodeTarget->Build Settings->Code Signing->Provisioning Profile中可看到此項(xiàng)。
如圖,選擇此項(xiàng)配置文件,code signing identity 中會(huì)默認(rèn)顯示所關(guān)聯(lián)的證書(shū)文件,即創(chuàng)建該配置文件時(shí)選擇關(guān)聯(lián)的證書(shū),可以有多個(gè),生產(chǎn)證書(shū)配置文件與之類(lèi)似,不再多說(shuō)。
以上這篇基于iOS開(kāi)發(fā)證書(shū)和配置文件的使用就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例
這篇文章主要介紹了iOS App設(shè)計(jì)模式開(kāi)發(fā)中策略模式的實(shí)現(xiàn)示例,例子采用傳統(tǒng)的Objective-C語(yǔ)言編寫(xiě),需要的朋友可以參考下2016-03-03iOS的XMPPFramework簡(jiǎn)單介紹(實(shí)現(xiàn)及時(shí)通信)
這篇文章主要介紹了iOS的XMPPFramework簡(jiǎn)單介紹(實(shí)現(xiàn)及時(shí)通信),實(shí)現(xiàn)了基于XMPP協(xié)議通信的開(kāi)發(fā),有需要的朋友可以了解一下。2016-11-11IOS 上架后出現(xiàn)90034代碼錯(cuò)誤問(wèn)題解決
這篇文章主要介紹了IOS 上架后出現(xiàn)90034代碼錯(cuò)誤問(wèn)題解決的相關(guān)資料,需要的朋友可以參考下2016-11-11iOS中的表單按鈕選項(xiàng)UIActionSheet常用方法整理
UIActionSheet經(jīng)常被用來(lái)制作各種彈出的選項(xiàng),這里我們就來(lái)看一下iOS中的表單按鈕選項(xiàng)UIActionSheet常用方法整理,需要的朋友可以參考下2016-06-06iOS開(kāi)發(fā)之image圖片壓縮及壓縮成指定大小的兩種方法
這篇文章主要介紹了iOS開(kāi)發(fā)之image圖片壓縮及壓縮成指定大小的兩種方法,需要的朋友可以參考下2017-11-11iOS模仿微信長(zhǎng)按識(shí)別二維碼的多種方式
這篇文章主要介紹了iOS模仿微信長(zhǎng)按識(shí)別二維碼的兩種方式,文章第二種方式是識(shí)別網(wǎng)頁(yè)中的二維碼,具體思路詳解大家參考下本文2017-07-07iOS端React Native差異化增量更新的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS端React Native差異化增量更新的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06iOS開(kāi)發(fā)教程之WKWebView與JS的交互
這篇文章主要給大家介紹了關(guān)于iOS開(kāi)發(fā)教程之WKWebView與JS的交互的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07