iOS 证书的讲解

最近的需要上线项目,遇到了一些问题,发现自己对配置证书的各个部分的含义理解的还不是很好。

本文不会去整理证书的配置过程,主要讲解的是  证书,CSR文件,设备,App ID,以及一些出现的报错信息


1)证书


对于想安装真机或者发布到AppStore的应用程序,只有经过签名验证才能确保来源可信,并且保证App内容的完整、未经过篡改。


aiOS 系统 Mac OS X系统会自动安装AppleWWDRCA.cer这个中间证书。它实际上就是iOS证书的CA,其公钥用于解密认证证书的可靠性。如果没有安装过这个证书,这个就需要下载安装。


第一种:开发证书 用于开发过程中真机测试

第二种:发布证书,用于发布到商店使用的



2Identifiers 标识符


App ID是一个用来标识我们应用程序App的。每个应用程序都有一个唯一的App ID也就是我们工程中看到的Bundle  ID


分类两种


aExplicit  App ID


这种标识符用来标识一个唯一的应用程序。和Bundle ID 一致的。


bWildcard  App ID 通配符 App ID  他可以标识一组应用程序


    b1)第一种用*创建App ID 他可以标识所有的应用程序

    b2)第二种是com.toDream.* 创建App ID 他可以标识以com.toDream 开头所有应用程序。


使用方法:

   在我们新建工程的时候,当你选择完需要创建的工程的时候点击下一步,需要给工程起名字。第三项Originzation Identifier 组织机构标识这里写上 com.toDream就可以了。


3Devices设备


我们需要开发和调试的设备,这里使用的是UDID来标识,查看UDID的方法:打开Xcode,选择window,选择Device。就可以查看到了


如果是99美元的个人或者公司开发者账号只能够添加100台设备。每个Devices有效期一年。一旦添加就无法删除。



4)描述文件 PP


描述文件包含以上三种信息:证书、AppID、设备的Devices


一个Provisioning profile对应一个Explicit App ID 或者 Wildcard App ID (一组相同的App  IDs


PP决定Xcode用哪个证书(公钥/私钥)来签署应用程序。在应用程序打包是嵌入到.ipa 包中。


Xcode将全部供应配置文件 ~/Library/MobileDevice/Provisioning Profiles


一个PP文件包含的内容  *.mobileprovision

(a)  Name:mobileprovision  的文件名称

(b) UUID  : mobileprovision 的真是文件名

(c)TeamName:Apple ID 账号名

(d)TeamIdentifier Team Identity

eAppIDName explicit/wildcard App ID nameApplicationIdentifierPrefix

 

fApplicationIdentifierPrefix  完整App ID的前缀(TeamIdentifier.*)。

(g)DeveloperCertificates  包含了可以为使用该配置文件应用签名的所有证书<data><array>




5CSR文件


我们在使用Keychain证书助理手动申请开发证书时,keychain讲生成一个包含开发者身份信息的CSR文件,同时,keychain Access|Keys中会新增一对Public/Private 钥匙对。


Private key用于签名  始终保存在Mac OS的钥匙串中;Public  key一般随证书散步出去,对签名进行校验认证。


Apple开发网站上传这个CSR文件,Apple证书颁发机构WWDRCA将使用private keyCSR中的public  key和一些身份信息进行加密签名生产数字证书(iOS_development.cer)并记录在Apple  MemberCenter


Apple MemberCenter 网站下载证书到Mac上双击即可安装。这是在药匙串中,找到创建CSR时,生产的Key Pair中的私钥的箭头可以查看到包含对应公钥的证书


6)多台机器上实现开发账号的/证书共享


若在Xcode Preferences添加了该Accounts,选中Team条目|ViewDetails:可以查看Signing IdentitiesProvisioning Profiles

  • 选中欲导出的Account,点击+-之后的|ExportAccounts,可导出包含account/code signingidentity/provisioning profiles信息的*.developerprofileExporting a Developer Profile)文件供其他机器上的Xcode开发使用(ImportAccount)。
  • 选中欲导出的Signing Identity条目,点击栏底+之后的|Export,必须输入密码,并需授权exportkey "privateKey" from keychain,将导出Certificates.p12;或在Keychain Access|Certificates中选中欲导出的certificate或其下private key,右键Export或者通过菜单File|Export Items导出Certificates.p12

其他Mac机器上双击Certificates.p12(如有密码需输入密码)即可安装该共享证书,在开发者网站上将欲调试的iOS设备注册到该开发者账号名下,并下载对应证书授权了iOS调试设备的Provisioning Profile文件即可在iOS真机设备上开发调试。


(7).证书配置常见错误


1. Xcode Target|Genera|Identity Team下提示"Your build settings specify a provisioning profile with the UUID "xxx",howerver, no such provisioning profile was found."



Xcode Target|BuildSettings|Code Signing|当前配置的指定UDIDprovisioningprofile在本地不存在,此时需要更改Provisioning Profile。必要时手动去网站下载或重新生成Provisioning Profile或直接在XcodeFix issue予以解决(可能自动生成iOS Team ProvisioningProfile)!


2.Build Settings|CodeSigningProvisioning Profile中选择了本地安装的provisioningprofile之后,Code Signing Identity中下拉提示No identities from profile “…”or No identities from keychain.


Xcode配置指定UDIDprovisioning profile中的DeveloperCertificates在本地KeyChain中不存在(No identities are available)或不一致(KeyPair中的Private Key丢失),此时需去网站检查ProvisioningProfile中的App ID-Certificate-Device配置是否正确。如果是别人提供的共享账号(*.developerprofile)或共享证书(*.p12),请确保导出了对应Key Pair中的Private Key。必要时也直接在XcodeFix issue予以解决(可能自动生成iOS Team ProvisioningProfile)。



3."Invalid application-identifier Entitlement"or "Code Signing Entitlements file do not match those specified in your provisioning profile.(0xE8008016)."


1检查对应版本(Debug)指定的*.entitlements文件中的“Keychain Access Groups”键值是否与ProvisioningProfile中的Entitlements项相吻合(后者一般为前者的Prefix/Seed)。

2)也可以将Build Settings|Code SigningProvisioning Profile中对应版本(Debug)的Entitlements置空。

4.Xcode配置反应有时候不那么及时,可刷新、重置相关配置项开关(若有)或重启Xcode试试。


参考文档

http://blog.csdn.net/crazyzhang1990/article/details/46447721

http://www.bkjia.com/Androidjc/942754.html



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值