您的位置:首页 > 移动开发 > IOS开发

iOS 证书调试的理解(Personal)

2016-01-04 16:01 253 查看
证书签名

证书:
众所周知,我们申请一个Certificate之前,需要先申请一个Certificate Signing Request (CSR) 文件,而这个过程中实际上是生成了一对公钥和私钥,保存在你Mac的Keychain中。代码签名正是使用这种基于非对称秘钥的加密方式,用私钥进行签名,用公钥进行验证。如下图所示,在你Mac的keychain的login中存储着相关的公钥和私钥,而证书中包含了公钥。你只能用私钥来进行签名,所以如果没有了私钥,就意味着你不能进行签名了,所以就无法使用这个证书了,此时你只能revoke之前的证书再申请一个。因此在申请完证书时,最好导出并保存好你的私钥。当你想与其他人或其他设备共享证书时,把私钥传给它就可以了。私钥保存在你的Mac中,而苹果生成的Certificate中包含了公钥。当你用自己的私钥对代码签名后,苹果就可以用证书中的公钥来进行验证,确保是你对代码进行了签名,而不是别人冒充你,同时也确保代码的完整性等。

在天朝子民的一生中,户籍证明可理解为等效的根证书:有了户籍证明,才能办理身份证;有了上流的身份证,才能办理下游居住证、结婚证、计划生育证、驾驶执照等认证。

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

普通个人开发账号最多可注册iOS Development/Distribution证书各2个(再确认一下)

iOS以及Mac OS X系统(在安装Xcode时)将自动安装AppleWWDRCA.cer这个中间证书(Intermediate Certificates),它实际上就是iOS(开发)证书的证书,即根证书(Apple Root Certificate)。
AppleWWDRCA(Apple Root CA)类似注册管理户籍的公安机关户政管理机构,AppleWWDRCA.cer之于iOS(开发)证书则好比户籍证之于身份证。

Apple证书颁发机构WWDRCA(Apple Worldwide Developer Relations Certification Authority)将使用private key对CSR中的public key和一些身份信息进行加密签名生成数字证书(ios_development.cer)并记录在案(Apple Member Center)。

个人理解:
AppleWWDRCA根证书的作用就是加密或签名.CSR文件,然后,Apple证书颁发机构WWDRCA验证.CSR是否正确,如果正确,在对.CSR中的public key和一些身份信息进行加密签名生成数字证书,这样数字证书就被认证过了,也就是在终端生成的公匙被认证了,这个被认证的公匙就可以用于验证签名了。

APP ID:
每创建一个App ID,我们都可以设置该App ID所使用的APP Services,也就是其所使用的额外服务。每种额外服务都有着不同的要求,例如,如果要使用Apple Push Notification Services,则必须是一个explicit App ID,以便能唯一标识一个应用程序。下面是目前所有可选的服务和相应的配置要求。

App ID 组成为:
App ID Prefix(前缀)+'.'+ App ID Suffix(后缀)
其中前缀是由苹果公司分配的,用来标识不同的开发者,也叫Team ID,
后缀,也叫Bundle ID,是开发者自定义的标识,类似于Andriod开发中的包名,
一般使用域名反转的风格

Device:
每一个开发者membership year,只能有100次增加设备的名额。如果你增加一个设备,之后又将该设备删除,并不会将用掉的名额恢复.

在每一个开发者membership year(会员年)开始的时候,Team Agent和Admin角色可以选择删掉一些设备来恢复资格, 也可以清空所有设备来恢复到最多100次设备的名额。这个操作在Team Agent和Admin在一次新的membership year开始后即可使用,在使用时,需要注意,先将需要删除的设备删掉,然后才能添加需要新增的设备。一旦开始增加新设备,删除设备以恢复名额的功能将不再可用

共享开发账号/证书
1.Xcode导出开发者账号(*.developerprofile)或PKCS12文件(*.p12)
进入Xcode Preferences|Accounts:
选中Apple IDs列表中对应Account的的Email,点击+-之后的☸|Export Accounts,可导出包含account/code signing identity/provisioning profiles信息的*.developerprofile(Exporting a Developer Profile)文件供其他机器上的Xcode开发使用(Import该Account)。(在使用*.developerprofile导入账号、证书、调试文件的时候,有可能跟之前安装的文件冲突,所以可以运行这个文件之后将调试文件都删除,重新下载新的调试文件) PS: *.developerprofile文件实际就是一个zip压缩文件
选中右下列表中某行Account Name条目|ViewDetails,可以查看Signing Identities和Provisioning Profiles。
选中欲导出的Signing Identity条目,右键选择Export,必须输入密码,并需授权export key "privateKey" from keychain,将导出Certificates.p12。

2.Keychain Access导出PKCS12文件(*.p12)
在Keychain Access|Certificates中选中欲导出的certificate或其下private key,右键Export或者通过菜单File|Export Items导出Certificates.p12——PKCS12 file holds the private key and certificate。
其他Mac机器上双击Certificates.p12(如有密码需输入密码)即可安装该共享证书。有了共享证书之后,在开发者网站上将欲调试的iOS设备注册到该开发者账号名下,并下载对应证书授权了iOS调试设备的Provisioning Profile文件,方可在iOS真机设备上开发调试。

注意:在钥匙串中删除某个开发者账号中存在的证书后,删除的证书会自动安装上,原因是,你在xcode的账号中加入了含有这个证书的账号,所以会自动下载下来。

PS:
1.网上说,provisioning profile包含证书,我理解的意思是,包含证书的名称,或者更详细信息,而不是包含证书本身,这个有待理解

2.将provisioning profile文件后缀该文txt后,用实用工具Apple script就可以将其打开查看里边的内容。

参考链接:/article/2321331.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: