在苹果开发者网站申请的证书,是授权mac设备的开发或者发布的证书,这意味着一个设备对应一个证书,但是99美元账号只允许生成3个发布证书,两个开发证书,这满足不了多mac设备的使用,使用p12文件可以解决这个问题。
方法/步骤
-
为什么要导出.p12文件
当我们用大于三个mac设备开发应用时,想要申请新的证书,如果在我们的证书里,包含了3个发布证书,2个开发证书,可以发现再也申请不了开发证书和发布证书了(一般在我们的证书界面中应该只有一个开发证书,一个发布证书,没必要生成那么多的证书,证书一般在过期之后才会重新添加。)
-
我们的每一个证书都可以生成一个.p12文件,这个文件是一个加密的文件,只要知道其密码,就可以供给所有的mac设备使用,使设备不需要在苹果开发者网站重新申请开发和发布证书,就能使用。
注意:一般.p12文件是给与别人使用的,本机必须已经有一个带秘钥的证书才可以生成.p12文件,如图:
-
打开钥匙串,选择我们需要的证书,右击,选择“导出“iPhone Distribition:```”:
-
为.p12文件填一个名字,点击存储:
-
填一个“密码”,“验证”和密码相同:
-
点击好,在桌面上就形成了一个.p12文件了:
-
在别人的电脑上要成功安装,须具备两个文件:
该证书导出的“.p12”文件。
苹果开发者中的与“证书”对应的“描述文件”
如果需要用于开发的,那么需要这两个文件:
.p12文件本身就是一个加密的证书,所以用这两个文件就可以让其他mac设备使用了:
-
拿到这两个文件后,依次双击“证书.p12“文件(需要输入密码,密码就是当时生成.p12时设定的密码),作用是加入钥匙串中,使我们的电脑具备开发的证明;
”描述文件“(作用是置于xcode中,让xcode知道我们开发的合法性),添加完后就可以使用了。
---------------------------------------------
设定:
我的A电脑 是公司电脑,并且是请求证书,即生成CertificateSigningRequest.certSigningRequest文件 的电脑。现在我我需要我自己的个人电脑B,还有我的同事的电脑C 和 项目经理的电脑D 都能 使用 这个苹果账号开发。
-----------------------
事实上。我们开发只需要
1.Xcode 登陆开发者帐户。
2.私钥。(电脑A生成,certSigningRequest包含私钥文件但是其它电脑BCD无法通过这个文件获取私钥,只能将证书下的私钥导出到p12文件里,再在BCD电脑上安装p12以获取私钥)注意是 证书下的私钥 不是整个证书哈. 很多人就是挂在这步了,导致 Xocde fix issue 时还是需要 reset 证书.
3. 对应私钥的 证书cer.(开发者中心里需要certSigningRequest 文件 生成的)
注意:
在最初生成certSigningRequest(电脑A)时就已经自动生成私钥并导入你电脑,但是其它共用此证书(.cer文件)的电脑(电脑BCD)没有此对应的私钥啊,那就必须要 导入(电脑A)生成此证书的certSigningRequest的私钥 为啥?因为BCD电脑和A是 不同身份的电脑,也就会生成不同的CertificateSigningRequest 文件,那么BCD电脑产生的对应的私钥肯定不一样啊,那么BCD电脑电脑A对应的证书肯定不匹配.
4.1 开发调试的mobileprovision可以完全Xcode自行从开发者中心 生成并获取,根本不用手动自行从开发者中心下载。
如:
对应的xcode中应该下载好,如下:
4.2 发布的mobileprovision 则只需要在开发者中心自行设置好,并使用Xcode自动匹配从开发者中心下载,根本不用手动自行从开发者中心下载。
----------------------
---------------------------------------------
基础知识补充:
1. Certification(证书)
证书是对电脑开发资格的认证,每个开发者帐号有一套,分为两种:
1) Developer Certification(开发证书)
安装在电脑上提供权限:开发人员通过设备进行真机测试。
可以生成副本供多台电脑安装;
2) Distribution Certification(发布证书)
安装在电脑上提供发布iOS程序的权限:开发人员可以制做测试版和发布版的程序。
不可生成副本,仅有配置该证书的电脑才可使用;(副本制做介绍在下面Keychain中介绍)2. Provisioning Profile(授权文件)
授权文件是对设备如iPod Touch、iPad、iPhone的授权,文件内记录的是设备的UDID和程序的App Id,即:使被授权的设备可以安装或调试Bundle identifier与授权文件中记录的App Id对应的程序。
开发者帐号在创建授权文件时候会选择App Id,(开发者帐号下App Id中添加,单选)和UDID(开发者帐号下Devices中添加最多100个,多选)。
授权文件分为两种,对应相应的证书使用:
1) Developer Provisioning Profile(开发授权文件)
在装有开发证书或副本的电脑上使用,开发人员选择该授权文件通过电脑将程序安装到授权文件记录的设备中,即可进行真机测试。
注意:确保电脑有权限真机调试,即安装了开发证书或副本;在开发工具中程序的Bundle identifier和选中使用的授权文件的App Id要一致;连接调试的设备的UDID在选中的授权文件中有记录。
2) Distribution Provisioning Profile(发布授权文件)
在装有发布证书的电脑上(即配置证书的电脑,只有一台)制做测试版和发布版的程序。
发布版就是发布到App Store上的程序文件,开发者帐号创建授权文件时选择store选项,选择App Id,无需选择UDID;
测试版就是在发布之前交给测试人员可同步到设备上的程序文件,开发者帐号创建授权文件时选择AdHoc,选择App Id和UDID;只有选中的UDID对应的设备才可能安装上通过该授权文件制做的程序。
3. Keychain(开发密钥)
安 装证书成功的情况下证书下都会生成Keychain,上面提到的证书副本(导出证书重新命名)就是通过配置证书的电脑导出Keychain(就是.p12 文件)安装到其他机子上,让其他机子得到证书对应的权限。Developer Certification就可以制做副本Keychain分发到其他电脑上安装,使其可以进行真机测试。