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

来源:http://www.cnblogs.com/lurenq/archive/2017/09/25/7591949.html
-Advertisement-
Play Games

前提 眾所周知,開發iOS應用必須要有iOS證書(Certificates)和配置文件(Provisioning Profiles),那麼問題來了: 1.什麼是iOS證書,它是如何與app應用關聯的?2.iOS開發證書和生產證書有何區別,如何使用的?3.證書與配置文件(Provisioning Pr ...


前提

眾所周知,開發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. 開發證書用於開發和調試應用程式,可用於聯機調試。
  2. 生產證書用來發佈應用程式。

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。
  2. 公鑰(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來唯一標識。
  2. 設備的UDID可通過iTunes->Summary或者Xcode->Window->Devices獲取。
  3. 開發描述文件(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。
  2. Provisioning Profile決定Xcode用哪個證書(公鑰)/私鑰組合(Key Pair/Signing Identity)來簽名應用程式(Signing Product),將在應用程式打包時嵌入到.ipa包里。
  3. Provisioning Profile把這些信息全部打包在一起,方便我們在調試和發佈程式打包時使用。這樣,只要在不同的情況下選擇不同的Provisioning Profile文件就可以了。
  4. Provisioning Profile也分為Development和Distribution兩類,有效期同Certificate一樣。Development版本的ProvisioningProfile用於開發調試,Distribution版本的ProvisioningProfile主要用於提交App Store審核,其不指定開發測試的Devices。
  5. xcode開發時,需在XcodeTarget->Build Settings->Code Signing->Provisioning Profile下配置對應的描述文件(Provisioning Profiles),然後在Code Signing Identity下拉可選擇Identities from Profile "..."(即Provisioning Profile中包含的Certificates)。
  6. 在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
  • 生產證書配置文件與之類似,不再贅述。
 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Apple Developer Program - 一年 $99 美元( ¥688 人民幣 ) - 此計劃讓您擁有發佈應用程式至 App Store 上進行發佈及銷售的許可權。 - 允許開發人員直接在綁定的 Apple 設備上安裝您的 app 以便測試。 - 可以邀請多達 2000 位 TestFli ...
  • For the most part iOS supports Right-to-Left (RTL) languages such as Arabic with minimal developer effort. Standard UIKit controls take care of switch ...
  • 維基百科將主頁定義為網站的初始頁或主要網頁。我想,“初始”和“主要”這兩個詞已經傳達了足夠的分量。然而現實情況卻往往差強人意,設計師想破腦袋也難以理解為何什麼用戶會毫無留念地離開,卻殊不知用戶在第一眼就已失去了興趣。設計師和用戶之間的橋梁似乎斷開了。本文中,我總結出了20個主頁設計實用技巧,助您打造 ...
  • iOS精選源碼 自定義視圖彈出實現方案 仿寫百思不得姐 ARKit,距離感應,AR尺子 iOS感測器集錦 AR太陽系,動畫與光線處理,ARKit iOS啟動頁廣告JYJAdViewController ThemeManager 是一個輕量級的主題管理庫,使用簡單方便無耦合 旋轉跑馬屏風動畫Donut ...
  • Android精選源碼 android仿美拍直播的點贊動畫 android視頻播放器完美切換全屏、小視窗源碼 android類似隨手記理財類源碼 android簡單瀏覽器源碼 android電動車項目源碼 android文件下載管理demo源碼 android錄音和播放的管理類源碼 android仿 ...
  • XCode9已經隨著ios11的發佈發佈了,那麼在這個XCode9版本中有哪些變化呢? 1 摺疊代碼 焦點在方法的實現體的方法名上,按comman鍵,則整個函數會被框住.用來標誌這個方法的起點和終點 此時單擊,出現菜單 在菜單里,有個Fold,可以用來摺疊方法,這個摺疊現在有個動畫效果 在其它上面點 ...
  • 最近很久沒有更新博客了,因為一直在學習前端h5 手機app的開發。曾經一度覺得自己css和js學得不錯,進入到前端領域後才發現水很深~,寫代碼時HBuilder和VS混用,HBuilder的快捷鍵和代碼提示以及真機調試方便,但是錯誤提示和代碼格式化是硬傷,VS的前端報錯提示很智能,代碼格式化很順暢, ...
  • 9月份蘋果發佈了IOS11和Iphone X,這一操作系統一硬體對於開發者適配上面還是造作了不少蛋疼的地方。先來看看IOS 11,這些蛋疼的需要適配的地方: 1、UIScrollView及其子類在IOS 11之前的版本UI顯示完全正常,但是在IOS 11上面會顯示奇葩的界面。 (1)先看一下UITa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...