iOS 开发证书的讲解

证书的相关问题总结


证书的作用是:证明iOS App 内容的合法性和完整性的数字证书。

1. 从流程上讲解每个步骤

(1)App ID  (bundle,identify)应用的唯一标识


  App ID分为两种:

 1.)一种是唯一的App ID  一般采用反域名方式 com.xxxxx.Project

 2.) 一种是通配符的App ID 用于表示一组应用程序。com.wanda.*  这种的不能进行推送。


(2)设备 Device

  就是可以进行真机测试的设备列表,就是每个Apple设备使用的UDID来唯一的标识。


 (3)证书

   首先我们理解下证书的概念:证书是由公证处或认证机关开具的证明资格或权利的证件,他是表明事理的一个凭证。凭证的尾部通常会烙印公章。


   数字证书:互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在网上验证通信实体身份的方式。是有一个权威的机构(证书授权中心发行)用来识别对方的身份。


   数字证书包含:一个公开密钥,名称,证书授权中心的数字签名。

   数字证书的特征:时效性。


某个认证领域的根证书是证书授权中心(CA机构)给自己颁发的证书,这个证书是信任链的起点,安装根证书意味着对这个CA认证中心的信任。


我们的Xcode在安装的时候,就自动安装了AppleWWDRCA.cer这个中间证书,这就是信任的起点。


(4)CSR文件

我们可以使用钥匙串创建一个CSR文件,这个CSR文件包含开发者身份信息。同时,keychain 中新增一对public/Private。其中私有的private key始终保存在Mac OS的keychain中。用于签名和对外发布的App。

public key一般随证书散布出去,对App签名进行校验。用户必须保存好本地keychain种的private key 。


我们需要把CSR文件上传到App开发网站。Apple证书颁发机构WWDRCA 将使用private key 对CSR中的public key和一些身份信息进行加密签名生成数字证书。并记录在Apple Member Center。


(5)配置完成证书后,下载下来,安装到Xcode中。


2 证书的分类


我们开发App使用的证书总的来说可以分为两种类型的,

(1)根证书:开发根证书和发布根证书。

(2)其他证书:附属功能的证书,推送证书,Apple Pay证书,Passbook证书等等。


作用的讲解:

(1)根证书与开发者或者企业对应的,只要是被根证书签名的App都可以理解为是这个证书对应的开发者开发的。所以一个根证书可以签名多个App。

(2)其他证书是和具体的App对应的,一个App的推送证书是无法给另一个App使用的,所以其他证书只能和一个App签名。也就是说这个App需要使用某一个项目Apple的服务而去产生这个其他证书。

 

举例:



如果我需要真机测试App1的推送,那我就需要下载开发根证书,App1的开发推送证书,对应的开发profile文件。双击安装就可以了。

如果后台是php还需要配置pem文件。


(3)描述性文件的作用:


1.)在App打包或者真机调试的时候,让Xcode去检查描述文件里面的bundleID与这个App的BundleID是否一致。

2.)如果一致就去keyChain查找有没有相对应的证书。(所以证书要下载好,并安装到keyChain中)

3.)如果证书存在,就检查证书的类型。如果是开发证书,就会检查调试的设备是否加入到了描述性文件里面的设备ID列表。如果设备在就可以进行调试,如果不在就不能进行调试了。

4.)如果新增了测试机,就需要在证书中心添加新测试机ID,所以描述性文件也需要更新。重新下载。下载后要先删除已存在的文件,/Users/XXX/Library/MobileDevice/Provisioning\ Profiles  XXX表示的是电脑的用户名。不要覆盖,先删除。

5.)provisioning profiles 文件包含了 证书,App ID ,设备。

1、一个描述文件对应一个bundle ID .在手动创建pp文件的时候,需要依次指定App ID (单选) 证书 、设备(多选)

2、一个描述性文件决定Xcode用哪个证书(公钥)/私钥组合来签署应用程序,将在应用程序打包时嵌入ipa包中,安装应用程序时,pp文件被拷贝到ios设备中,运行该ios App的设备也通过它来认证安装的程序。


3、pp文件也分为“开发”和“发布” 有效期和证书一样。


4、pp文件的位置  ~/Library/MobileDevice/Provisioning Profiles


5、Team Provisioning Profile


   (1)Team Provisioning Profile 

每个Apple开发者账号都对应一个唯一的Team ID 在Xcode中添加Apple Developer Account时,它将于Apple Member Center后台勾兑自动生成iOS Team Provisioning Profile (App ID , Certificates,Devices)。

(2)Team Provisioning Profile 包含一个为 Xcode iOS Wildcard App ID(*)生成的iOS Team Provisioning Profile * (匹配所有应用程序)。账户里所有的Development Certificates和Devices都可以使用它在这个team注册的所有设备上调试所有的应用程序(不管bundle identifier是什么)。同时,它还会为开发者自己创建的Wildcard/Explicit App IDs创建对应的iOS Team Provisioning Profile。


6.App Group (ID)


应用扩展允许开发者扩展应用的自定义功能和内容,能够让用户在使用其他应用程序时使用该项功能,从而实现各个应用程序间的功能和资源共享。可以将扩展理解为一个轻量级(nimble and lightweight)的分身。

扩展和其Containing App各自拥有自己的沙盒,虽然扩展以插件形式内嵌在Containing App中,但是它们是独立的二进制包,不可以互访彼此的沙盒。为了实现Containing App与扩展的数据共享,苹果在iOS 8中引入了一个新的概念——App Group,它主要用于同一Group下的APP实现数据共享,具体来说是通过以App Group ID标识的共享资源区——App Group Container。

App Group ID同App ID一样,一般不超过255个ASCII字符。用户可在网站上编辑Explicit App IDs的App Group Assignment;可以删除(Delete)已注册的AppGroup (ID)。

2.App Group的配置

Containing App与Extension的Explicit App ID必须Assign到同一App Group下才能实现数据共享,并且Containing App与Extension的App ID命名必须符合规范:

  1. 置于同一App Group下的App IDs必须是唯一的(Explicit,not Wildcard)
  2. Extension App ID以Containing App ID为Prefix/Seed

假如Garageband这个App ID为“com.apple.garageband”,则支持从语音备忘录导入到Garageband应用的插件的App ID可能形如“com.apple.garageband.extImportRecording


 

App(ex)

 

App Group ID

Provisioning Profile

Code Signing Identity

Certificate Key Pair

App ID

bundle identifier

Devices

test

GarageBand

置于同一分组:

group.com.apple

(1)共用同一证书:ios_development.cer

(2)共用证书Key Pair中的Private Key进行CodeSign

com.apple.garageband

授权开发测试设备的UDIDs

GarageBand扩展插件

com.apple.garageband.extImportRecording

关于Provisioning Profile,可以使用自己手动生成的,也可以使用Xcode自动生成的Team Provisioning Profile。

App Group会被配置到Xcode Target|Build Settings|Code Signing|Code Signing Entitlements】文件(*.entitlements)的键com.apple.security.application-groups下,不影响Provisioning Profile生成流程。

主要是用来两个App之间进行数据的分享。

http://www.cnblogs.com/sirkevin/p/4531160.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值