理解Certificate、App Id、Identifiers 和 Provisioning Profile

來源:互聯網
上載者:User

做真機測試的時候,按照網上的流程,走通了,當時沒有注意各種認證等的意思。現在做訊息推送,需要各種認證、APP ID資訊,為了更好的理解這個過程,所以整理了網上關於認證等的相關資料。方便自己和有需要的朋友。

 

內容參考自:http://blog.csdn.net/hitwhylz/article/details/22989507

http://my.oschina.net/u/1245365/blog/196263

 

當你準備進行真機測試或者發布應用到App Store上去的時候, 免不了要申請相應的認證。(Development--測試認證。 Distribution--發布認證)

進入認證管理相應網站https://developer.apple.com/account/ios/profile/profileList.action。

可以很容易的發現這樣的幾個東西。

其中, Devices指的當然是裝置了。 這裡不做介紹。每個開發人員帳號可以關聯100台裝置。你可以通過xcode直接添加你的裝置。

現在, 著重講解下Certificate、AppId和Provisioning Profile。

 

Certificate(認證)

認證是你有權利開發的憑證,是開發人員的一種標識,相當於身份證,一個開發人員帳號只有一套。一套含兩個,Development和Distribution(也就是Production)。

其中Development認證提供開發人員在電腦上真機調試的許可權,可以製作多個副本分發到多台電腦。

Distribution認證給開發人員提供發布ios程式的許可權,也就是說有了這個,你就有權力發布程式到App Store去了。只有一個,不能製作副本分發到多台電腦。

下面是認證的分類資訊:(括弧內為認證有效期間)

 

  • Development
    • App Development (1年):用來開發和真機調試應用程式。
    • Push Development (1年):用來調試Apple Push Notification
  • Production
    • In-House and Ad Hoc (3年):用來發布In-House和AdHoc的應用程式。

    •  

         App Store :用來發布提交App Store的應用程式。
    • MDM CSR
    • Push Production (1年):用來在發布版本中使用Apple Push Notification。
    • Pass Type ID Certificate
    • Website Push ID Certificate

 

 

注:

 

我們申請一個Certificate之前,需要先申請一個Certificate Signing Request (CSR) 檔案,而這個過程中實際上是產生了一對公開金鑰和私密金鑰,儲存在你Mac的Keychain中。程式碼簽署正是使用這種基於非對稱秘鑰的加密方式,用私密金鑰進行簽名,用公開金鑰進行驗證。如所示,在你Mac的keychain的login中儲存著相關的公開金鑰和私密金鑰,而認證中包含了公開金鑰。你只能用私密金鑰來進行簽名,所以如果沒有了私密金鑰,就意味著你不能進行簽名了,所以就無法使用這個認證了,此時你只能revoke之前的認證再申請一個。因此在申請完認證時,最好匯出並儲存好你的私密金鑰。當你想與其他人或其他裝置共用認證時,把私密金鑰傳給它就可以了。私密金鑰儲存在你的Mac中,而蘋果產生的Certificate中包含了公開金鑰。當你用自己的私密金鑰對程式碼簽署後,蘋果就可以用認證中的公開金鑰來進行驗證,確保是你對代碼進行了簽名,而不是別人冒充你,同時也確保代碼的完整性等。 

 

 

 

App ID

 

 

App ID用於標識一個或者一組App,App ID應該是和Xcode中的Bundle ID是一致的或者匹配的。App ID主要有以下兩種: 

  • Explicit App ID:唯一的App ID,這種App ID用於唯一標識一個應用程式,例如com.ABC.demo1,標識Bundle ID為com.ABC.demo1的程式。
  • Wildcard App ID:萬用字元App ID,用於標識一組應用程式。例如*可以表示所有應用程式,而com.ABC.*可以表示以com.ABC開頭的所有應用程式。

 每建立一個App ID,我們都可以設定該App ID所使用的APP Services,也就是其所使用的額外服務。每種額外服務都有著不同的要求,例如,如果要使用Apple Push Notification Services,則必須是一個explicit App ID,以便能唯一標識一個應用程式。下面是目前所有可選的服務和相應的配置要求。

如果你的App使用上述的任何一種service,就要按照要求去配置。

 Identifiers
  • Identifiers 即”標識符“,約等於是身份證,用於建立以下三個:

    App IDs 

    Pass Type IDs

    Website Push IDs

其中,App ID是應用的唯一標示符,每一個應用的app id是不一樣的

 

Provisioning Profile

 

一個Provisioning Profile檔案包含了上述的所有內容:認證、App ID、裝置。

試想一下,如果我們要打包或者在真機上運行一個應用程式,我們首先需要認證來進行簽名,用來標識這個應用程式是合法的、安全的、完整的等等;然後需要指明它的App ID,並且驗證Bundle ID是否與其一致;再次,如果是真機調試,需要確認這台裝置能否用來運行程式。而Provisioning Profile就把這些資訊全部打包在一起,方便我們在調試和發布程式打包時使用,這樣我們只要在不同的情況下選擇不同的profile檔案就可以了。而且這個Provisioning Profile檔案會在打包時嵌入.ipa的包裡。

例如,如所示,一個用於Development的Provisioning Profile中包含了該Provisioning Profile對應的App ID,可使用的認證和裝置。這意味著使用這個Provisioning Profile打包程式必須擁有相應的認證,並且是將App ID對應的程式運行到Devices中包含的裝置上去。

如上所述,在一台裝置上運行應用程式的過程如下:

與認證一樣,Provisioning Profile也分為Development和Distribution兩種:

(註:前面提到不同賬戶類型所能建立的認證種類不同,顯然Profile檔案的種類是和你所能建立的認證種類相關的)

  • Development (1年)
  • Distribution (1年)
    • In House
    • Ad Hoc
    • App Store

In House 與Ad Hoc的不同之處在於:In House沒有裝置數量限制,而Ad Hoc是用來測試用的,Ad Hoc的包只能運行在該賬戶內已登記的可用裝置上,顯然是有最多100個裝置的數量限制。所以這兩種Provisioning Profile檔案的區別就在於其中的裝置限制不一樣而已,而他們所使用的Certificate是相同的。

 

 

2.開發/發布流程

 

瞭解了上面的概念,再來看開發及發布流程就非常簡單了,而且相信你不用看教程也能一步步完成所有的操作了。

開發/真機調試流程

根據上面的介紹,可以知道進行Development主要有以下幾個步驟:

  • 申請認證
  • 加入裝置
  • 產生Provisioning Profile
  • 設定Xcode Code Sign Identifer

事實上第三步通常是不需要的,因為我們通常都是用Xcode產生和管理的iOS Team Provisioning Profile來進行開發,因為它非常方便,所以不需要自己手動產生Provisioning Profile。

iOS Team Provisioning Profile是第一次使用Xcode添加裝置時,Xcode自動產生的,它包含了Xcode產生的一個Wildcard App ID(*,匹配所有應用程式),賬戶裡面所有的Devices和所有Development Certificates,如所示。因此,team中的所有成員都可以使用這個iOS Team Provisioning Profile在team中的所有裝置上調試所有的應用程式。並且當有新裝置添加進來時,Xcode會更新這個檔案。

發布流程

網上有很多關於發布App Store的流程,我就不綴述了,不過根據上面的概念介紹,不管是App Store、In-House還是Ad-Hoc,打包流程都是差不多的,都包括了以下幾個關鍵步驟:

  • 建立發布認證
  • 建立App ID
  • 建立對應的Provisioning Profile檔案
  • 裝置Bundle ID和App ID一致
  • 設定Xcode Code Sign Identifer,選擇合適的Profile和認證進行簽名,打包

以上就是對認證、Provisioning Profile、App ID等的介紹,下一篇文章會介紹以下In-House認證相關的內容。

 

 PS下面來介紹如何申請認證:第一步:申請本地認證

申請認證必須在我們的電腦上先申請一個認證,找到  :

                                

點擊"其他",找到“鑰匙串”:

                              

選擇從頒發機構申請認證,注意下面的紅色框,必須選擇那一個才可以:

                            

點擊後看到:

                                       

如果選擇 “儲存到磁碟”,那麼“使用者郵件地址” 隨便填一個就好,點擊“繼續”:

                                       

“儲存為:”可以給認證命名,選擇一個位置,點擊“儲存”:

                                       

這樣在案頭就產生了一個認證。

注意這一個本地認證可以同時用來產生“開發認證”和“發布認證”。

 

下面只介紹“發布認證“的申請,申請”開發認證“步驟相同,就是換一個選項 

第二步: 在開發人員帳號裡申請認證              

我們進入99美元開發帳號看到:

                         

點擊 Certificates, Identifiers & Profiles,進入頁面看到:

                                               

如果要申請開發認證就選擇 Development,如果要申請發布認證,就選擇 Production,步驟都是選擇“+”號後添加認證:

                                                     

點擊“+”後看到:

                                                     

如果是選擇 “開發認證”,點擊第一個紅框

                                    

如果是選擇 “發布認證”,點擊第二個紅框

                                              

選擇好後,點擊“continue”:

                                                          

 

點擊後出現:                                                  

選擇“Choose File” 將剛剛申請的儲存在本地的認證上傳:

                                                         

                                                         

上傳好後,點擊“Generate” 就可以產生認證了。

 

選擇“Download”。

這時,我們在本地產生的認證就沒用了,可以刪除。

 

我們返回到認證的介面可以看到我們申請的認證:

 

一般申請一個 發布認證(IOS Distribution),一個開發認證(IOS Development)就夠用了。

 

找到下載的檔案,雙擊它,添加到鑰匙串裡就好了。在這一步裡,如果鑰匙串拒絕添加,直接將其拖進鑰匙串就行:

這樣認證就申請完畢了,有了認證後,接下來可以申請各種各樣的描述檔案供開發使用

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.