团队开发中如何共用证书
团队开发中,需要共享证书文件和私钥。若仅从provisioning portal下载证书文件而无私钥,xcode会提示出错:Unable to code design using identities in this team: no private keys available(无法在团队中进行代码签名:找不到有效的私钥)。解决办法:
(1) 打开钥匙串程序,选择 ‘秘钥’ 种类。
(2) 右键点击(或按住control点击)与开发证书相配套的私钥(专用密钥),并点击 ‘导出’,保存为Personal Information Exchange (.p12) 文件格式.,将提示你创建一个密码,并需要管理员密码才可导出。
(3) 拷贝该p12文件到其他机子上,会提示你输入上一步输入的密码。
?
要让真机跑起来,必须要在code signing里选者正确的provision(.mobileprovision)。provision是通过certificate(证书)生成的,并包括了可以调试的设备uuid和对应的appid,只有满足这些条件的设备和app才能使用这个provision跑起来。xcode一般会自动提供一个team provision用于让所有在开发者帐号这册过的设备在所有的app上能运行,这样你就不用专门去制作用于调试的provision了。不过也有例外的情况,如果你的app要使用push notification,in-app purchase等这些功能,还是需要使用只对应该appid的provision。provision分为调试和发布两种,分别由调试证书和发布证书生成,使用发布的provision不能在设备上作调试,使用调试的provision生成的app不能提交到AppStore上。
证书(.cer)是通过CSR(.certSigningRequest)文件生成的,CSR文件通过keychain工具来制作,生成之后会在keychain里保存私钥,苹果通过CSR生成的证书文件则包含公钥信息。这个私钥相当的重要,往往真机调试不了出现code signing invalid就是因为缺少私钥文件。私钥导出的是p12格式文件。
公钥和私钥是如何保证数据安全的,网上有好多资料介绍,简单来说它们是非对称加密方式,用私钥加密的数据要用公钥才能解密,用公钥加密的数据要用私钥才能解密。数字证书相当于网络识别本人的身份证,它包含有公钥的信息所以是公开被别人下载的,而私钥则是本人持有的。本人通过私钥把数据加密发送出去后,持有本人数字证书的机构或个人如果能解密成功,就证明该数据确实是本人发送的,这样数字证书就能起到识别发送者身份的作用。