引言

关于开发证书配置(Certificates&Identifiers&Provisioning Profiles),相信做iOS开发的同学没少被折腾。对于一个iOS开发小白、半吊子(比如像我自己)抑或老兵,或多或少会有以下不详、疑问、疑惑甚至困惑:

  1. 什么是App ID?Explicit/Wildcard App ID有何区别?什么是App Group ID?
  2. 什么是证书(Certificate)?如何申请?有啥用?
  3. 什么是Key Pair(公钥/私钥)?有啥用?与证书有何关联?
  4. 什么是签名(Signature)?如何签名(CodeSign)?怎样校验(Verify)?
  5. 什么是(Team)Provisioning Profiles?有啥用?
  6. Xcode如何配置才能使用iOS真机进行开发调试?
  7. 多台机器如何共享开发者账号或证书?
  8. 遇到证书配置问题怎么办?

本文将对相关概念做个系统的梳理串烧。

写在前面

1.假设你使用过Apple设备(iMac/iPad/iPhone)且注册过Apple ID(Apple Account)。

2.假设你或你所在的开发组已加入苹果开发者计划(Enroll in iOS Developer Program to become a member),即已注册开发者账号(Apple Developer Account)。

  • 只有拥有开发者账号,才可以申请开发/发布证书及相关配置授权文件,进而在iOS真机上开发调试Apps或发布到App Store。
  • 开发者账号分为Individual和Company/Organization两种类型。如无特别交代,下文基于$99/Year的普通个人开发者(Individual)账号展开。

3.如果要真机调试实践,你必须至少拥有一台装有Mac OS X的Mac开发机(iMac or MacBook),其上自带原生的Keychain Access,并且你需要下载Xcode。

.App ID(bundle identifier)

App ID即Product ID用于标识一个或者一组App,App ID应该和Xcode中的Bundle Identifier是一致的或匹配的。

App ID字符串通常以反域名(reverse-domain-name)格式的Company Identifier(Company ID)作为前缀(Prefix/Seed),一般不超过255个ASCII字符。

App ID全名会被追加ApplicationIdentifierPrefix(一般为TeamID.),分为两类:

  • Explicit App ID:唯一的App ID,这种App ID用于唯一标识一个应用程序。例如“com.apple.garageband”这个App ID,用于标识Bundle Identifier为“com.apple.garageband”的程序。
  • Wildcard App ID:通配符App ID,用于标识一组应用程序。例如“*”(实际上是ApplicationIdentifierPrefix)表示所有应用程序;而“com.apple.*”可以表示以“com.apple.”开头的所有应用程序。
用户可在网站上删除(Delete)已注册的App IDs。
App ID被配置到【XcodeTarget|Info|Bundle Identifier】下;对于Wildcard App ID,只要bundle identifier包含其作为Prefix/Seed即可。

.设备(Device)

Device就是运行iOS系统用于开发调试App的设备,每台设备使用UDID来唯一标识。iOS设备连接Mac后,可通过iTunes->Summary或者Xcode->Window->Devices获取iPhone的UDID(identifier)。

Apple Member Center网站个人账号下的Devices中包含了注册过的所有可用于开发和测试的设备。普通个人开发账号每年累计最多只能注册100个设备,用户可在网站上启用/禁用(Enable/Disable)已注册的Device。

  • Apps signed by you or your team run only on designated development devices.
  • Apps run only on the test devices you specify.
本文的Devices即连接到Xcode被授权用于开发测试的iOS设备(iPhone/iPad)。

.证书(Certificates)

顾名思义,证书是用来证明内容(App的executalbe code)的合法性和完整性的。对于想安装到真机或发布到AppStore的应用程序(App),只有经过签名验证(Signature Validated)才能确保来源可信,并且保证App内容是完整、未经篡改的。

证书分为两类:Development和Production(Distribution)。

  • Development证书用来开发和调试应用程序:A development certificate identifies you, as a team member, in a development provisioning profile that allows apps signed by you to launch on devices.
  • Production主要用来分发应用程序(根据证书种类有不同作用):A distribution certificate identifies your team or organization in a distribution provisioning profile and allows you to submit  your app to the store. Only a team agent or an admin can create a distribution certificate.

普通个人开发账号最多可注册iOS Development/Distribution证书各2个,用户可在网站上删除(Revoke)已注册的Certificate。下文主要针对开发调试阶段的Development证书。

首先,iOS以及Mac OS X系统(在安装Xcode时)将自动安装AppleWWDRCA.cer(Apple Worldwide Developer Relations Certification Authority)这个中间证书(Intermediate Certificates)。它实际上就是iOS证书的CA,其公钥用于解密认证证书的可靠性。如果Mac Keychain Access证书助理在申请证书时尚未安装过该证书,请先下载安装(Signing requires that you have both the signing identity and the intermediate certificate installed in your keychain)。

通过Keychain证书助理手动申请开发证书时(也可通过Xcode自动请求生成),keychain将生成一个包含开发者身份信息的CSR(Certificate Signing Request)文件;同时,Keychain Access|Keys中将新增一对Public/Private Key Pair(This signing identity consists of a public-private key pair that Apple issues)。

private key用于签名(CodeSign),始终保存在Mac OS的Keychain Access中;public key一般随证书散布出去,对签名进行校验认证。用户必须保护好本地Keychain中的private key,以防伪冒。

  • Keep a secure backup of your public-private key pair. If the private key is lost, you’ll have to create an entirely new identity to sign code.
  • Worse, if someone else has your private key, that person may be able to impersonate you.

在Apple开发网站上传该CSR文件,Apple证书颁发机构WWDRCA将使用private key对CSR中的public key和一些身份信息进行加密签名生成数字证书(ios_development.cer)并记录在案(Apple Member Center)。

从Apple Member Center网站下载证书到Mac上双击即可安装。证书安装成功后,在 KeychainAccess|Keys中展开创建CSR时生成的Key Pair中的私钥前面的箭头,可以查看到包含其对应公钥的证书(Your requested certificate will be the public half of the key pair.);在Keychain Access|Certificates中展开安装的证书(ios_development.cer)前面的箭头,可以看到其对应的私钥。

Certificate被配置到【Xcode Target|Build Settings|Code Signing|Code Signing Identity】下,下拉选择Identities from Profile "..."(一般先配置Provisioning Profile)。

.供应配置文件(Provisioning Profiles

Provisioning Profile文件包含了上述的所有内容:证书、App ID和设备

一个Provisioning Profile对应一个Explicit App ID或Wildcard App ID(一组相同Prefix/Seed的App IDs)。 在网站上手动创建一个Provisioning Profile时,需要依次指定App ID(单选)、证书(Certificates,可多选)和设备(Devices,可多选)。用户可在网站上删除(Delete)已注册的 ProvisioningProfiles。

Prov

转载于:https://www.cnblogs.com/fyongbetter/p/5404743.html

iOS开发证书要点详解相关推荐

  1. iOS开发证件要点详解

    iOS开发证书要点详解 引言 关于开发证书配置(Certificates&Identifiers&Provisioning Profiles),相信做iOS开发的同学没少被折腾.对于一 ...

  2. IOS开发-GitHub使用详解

    1.GitHub是什么? GitHub这个名词既可以是那个流行的代码分享和协作网站 https://github.com/,也可以是指Git客户端工具(与其他的Git客户端工具如GitEye类似,只不 ...

  3. iOS申请发布证书-图文详解

    iOS申请发布证书-图文详解 首先登陆https://developer.apple.com 选择iOS Developer program 板块下的 Certificates,Identifiers ...

  4. iOS APP上架流程详解

    iOS APP上架流程详解 青葱烈马 2016.04.28  前言:作为一名 iOS 开发工程师, APP 的上架是必备技能. iOS 上架的流程主要可以简单总结为: 一个包,两个网址,三个证书, 一 ...

  5. 在Windows电脑直接申请iOS开发证书p12及.mobileprovision

    Appuploader软件可以辅助在Windows电脑直接申请iOS证书,并且可以上传ipa到App Store审核! 对于没有Mac电脑的开发者,是一个很好的iOS上架辅助工具 下面介绍申请一套iO ...

  6. iOS开发证书p12和.mobileprovision文件申请介绍

    Appuploader可以辅助在Windows电脑直接申请iOS证书,下面是申请一套iOS开发证书的详细流程 方便没有Mac电脑的开发者! 直接申请p12和.mobileprovision证书文件 一 ...

  7. iOS开发证书申请详细教程(真机调试测试使用)

    Appuploader可以辅助在Windows电脑直接申请iOS证书,下面是申请一套iOS开发证书的详细流程 一.下载安装iOS上架辅助软件Appuploader Appuploader下载链接 下载 ...

  8. “iOS 推送通知”详解:从创建到设置到运行

    "iOS 推送通知"详解:从创建到设置到运行 转自 http://www.csdn.net/article/2012-02-18/311976 这是一篇编译的文章,内容均出自Par ...

  9. iOS开发-证书问题精析~

    在iOS开发过程中,不可避免的要和证书打交道,真机调试.App上架.打包给测试去测试等都需要搞证书.在此过程中我们会遇到很多的问题,但是如果掌握了真机调试的原理和本质:遇到问题,我们就更容易定位问题之 ...

  10. iOS里面MVC模式详解

    iOS里面MVC模式详解 MVC是IOS里面也是很多程序设计里面的一种设计模式,M是model,V是view,C是controller.MVC模式在ios开发里面可谓是用得淋漓尽致. 以下是对斯坦福大 ...

最新文章

  1. 面试必备|带你彻底搞懂Python生成器
  2. matplotlib绘制多个子图
  3. C++模板基本概念及语法
  4. linux怎么复制手册,程序员的Linux上手手册(2) - 基础文件操作命令
  5. 什么是区块链钱包?区块链钱包如何运作?
  6. 【dfs】虫食算(ybtoj dfs-1-3)
  7. python 代理服务器_Python实现HTTP代理服务器
  8. 207. 课程表/210. 课程表 II
  9. Microsoft Visual Studio 2008从试用版转为正式版
  10. NGUI_2.6.3_系列教程二
  11. magento 安装出错 完全解决方案
  12. Ubuntu16.04.1安装Caffe(GPU)
  13. 苹果cms mysql 什么版本_分享如何使用阿里云ECS快速搭建CMS网站
  14. 如何将文件地址转为url_如何快速替换WordPress站点新旧URL地址?
  15. 常用方法总结--文件操作篇
  16. win32汇编实现一个简单的TCP服务端程序(WinSock的简单认知应用)
  17. 苏宁大数据怎么运营_苏宁首个无人店大数据曝光,其消费人群是如何分布的?...
  18. 成长路线 - Android移动开发架构师
  19. 学习笔记:使用requests+Beautiful4爬取优美图库
  20. Java学习路线和资料分析

热门文章

  1. GridView冻结列的实现
  2. 多个引用类型的变量“引用”同一个对象意味着什么
  3. Yii 2.0 权威指南 (6) 请求处理
  4. 解决Windows下Redis出现“MISCONF Redis is configured to save RDB snapshots”的错误
  5. ASP.NET MVC 不能加载项目的解决办法
  6. 33. 对包含指针的容器使用remove这一类算法时要特别小心
  7. struts2之日期类型转换
  8. maven打包失败:自定义项目工具类打包给其他微服务使用
  9. (day06 dfs+剪枝)剑指 Offer 12. 矩阵中的路径
  10. 我的世界乘法计算机,《我的世界》计算器的加法和乘法器电路图文教程