证书和配置文件可能是一个棘手的话题,因此在不经意间给自己带来痛苦之前,最好先询问一下!
问1:每个账户只能有一个发布证书吗?
答:是的,个人和公司账户每个会员年度仅限一个活动的发布证书,但如果个人或公司认为有必要这样做(公钥/私钥被破解、终止具有私钥访问权限的员工等),则可以随时撤销并重新颁发该证书。我最近回答了一个问题
"什么是代码签名标识?",它可能有助于提供有关编码到配置文件中的信息以及Xcode在执行设备构建时如何查找此信息的其他上下文。请记住,根据使用的配置文件类型(开发与分发),配置文件中编码的证书和测试设备的数量和类型将发生变化。
您也完全正确,您将重复使用现有的发布证书,并使用第二个应用程序的应用程序ID /包ID编码的全新一组配置文件。
Q2: 证书而不是配置文件安装在Keychain中,对构建机器会有什么影响?
是的,这是正确的。您的开发证书和发布证书都会被安装到Keychain中,而配置文件则会被安装到Xcode的特殊目录中,以供代码签名操作使用。
假设您已经为第一个应用程序设置并运行了构建机器,则已完成了大部分艰苦的工作。以下是您仍需要完成的任务:
- 使用现有证书为新的AppId生成一组配置文件
- 在构建环境上安装配置文件
- 确保Xcode项目的“代码签名身份”构建设置已配置为使用新创建的配置文件,或更理想地使用“自动配置文件选择器”,如果您的项目配置允许。
- 配置您的构建系统,以实际制作新的应用程序。
这些高级任务的具体操作方法将在某种程度上取决于您如何设置项目和构建系统,但通常应遵循构建第一个应用程序时使用的相同工作流程。
Q3: 将构建环境分区到单独的机器上是必要的/好主意吗?
就这个问题的“必要”部分而言,不需要将构建环境物理或虚拟地分开才能并行构建这些应用程序,但是如果您的业务需求需要按应用程序的基础设置专用的构建环境,则可以选择这样做。从技术角度来看,配置文件提供了99%的分区支持,以便能够并行构建。只有在您是两个或更多iOS Development Program的成员且由每个团队颁发的证书上的“常用名称”匹配时(例如,“iPhone Distribution:MyCompany”是Team1的证书的常用名称,并且与Team2颁发的证书完全相同),您才会遇到可能需要物理或虚拟分区的情况。如果出现这种情况,您将在Xcode中看到以下警告和错误:验证码错误:证书标识“iPhone Distribution:MyName”在钥匙串中出现了多次。codesign工具要求只有一个。在所有其他情况下,假设您已安装了您的证书和配置文件,并正确设置了代码签名身份值,则代码签名可以自行处理。
Q4:是否可以重复使用同一个推送证书作为两个应用的证书?
不可以。每个应用程序ID都有自己的一组配套配置文件,其中包括一组许可,其中之一就是推送通知。当使用推送通知许可构建新的配置文件时,需要生成新的推送证书--无法向苹果提供现有证书。这样做是为了确保推送通知提供程序(创建发送到苹果推送网关的推送通知有效负载的服务器)在类似于iOS生态系统中找到的方式下被封装 - 每个AppId只有一个提供者...每个AppId只有一个沙箱。
从安全角度来看,这可以防止攻击者仅通过提供有效的Push标记和有效负载而向用户发送垃圾邮件式的推送通知。要么设置您的提供者代码的第二个实例并使用创建新的配置文件时生成的Push证书,要么更新您现有的提供者以按应用程序级别跟踪Push通知标记,并在向Apple发送Push通知有效负载时使用正确的证书。不幸的是,只有您(或您的同事)可以做出此决定,因为该决策将受现有提供程序的技术能力和您/您的公司愿意在同一提供程序实例上统一Push通知的风险程度的支配。
其他人可能会在这里发言,提供一些关于如何设置他们自己的提供商的额外见解,但我选择完全分开的实例来防止一个应用程序的推送通知更新可能会破坏完全不同应用程序的推送通知的情况。