上面已经提到,公钥被包含在数字证书里,数字证书又被包含在描述文件(Provisioning File)中,描述文件在应用被安装的时候会被拷贝到iOS设备中。
第一步,App在Mac/iOS真机上启动时,需要对配置的bundle ID、entitlements和certificate与Provisioning Profile进行匹配校验:
第二步,iOS/Mac真机上的ios_development.cer被AppleWWDRCA.cer中的 public key解密校验合法后,获取每个开发证书中可信任的公钥对App的可靠性和完整性进行校验。
iOS/Mac设备(系统)使用App Provisioning Profile(Code Signing Identity)中的开发证书来判断App的合法性:
再对App(executable code)本身使用哈希算法计算摘要,若与上一步得到的摘要一致,则证明此App(executable code)未被篡改过,即内容完整。
小结:
基于Provisioning Profile校验了CodeSign的一致性;
基于Certificate校验App的可靠性和完整性;
启动时,真机的device ID(UUID)必须在Provisioning Profile的ProvisionedDevices授权之列。
八.在多台机器上共享开发账户/证书
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)。
选中右下列表中某行Account Name条目|ViewDetails,可以查看Signing Identities和Provisioning Profiles。
选中欲导出的Signing Identity条目,点击栏底+之后的?|Export,必须输入密码,并需授权export key "privateKey" from keychain,将导出Certificates.p12。
点击左下角的刷新按钮可从Member Center同步该账号下所有的Provisioning Profile到本地。
选中右击列表中某个Provisioning Profile可以【Show in Finder】到[~/Library/MobileDevice/Provisioning\ Profiles]目录,其中Provisioning Profile的真实名称为$(UUID).mobileprovision,名如"2488109f-ff65-442e-9774-fd50bd6bc827.mobileprovision",其中Name中为Xcode中看到的描述性别名。
2.Keychain Access导出PKCS12文件(*.p12)
在Keychain Access|Certificates中选中欲导出的certificate或其下private key,右键Export或者通过菜单File|Export Items导出Certificates.p12——PKCS12 file holds theprivate keyandcertificate。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-67415-8.html
对他无利就藐视国际法