iOS 证书管理是开发中最容易被忽视但又最容易出问题的环节。证书过期导致应用无法提交、描述文件设备列表忘了更新导致测试机装不上 IPA、多人协作时证书文件在团队成员之间传递混乱------这些问题几乎每个团队都遇到过。
证书的类型和用途
iOS 证书分为开发证书和发布证书两种。开发证书用于将 App 安装到真机调试,每个开发者可以创建最多 2 个。发布证书用于提交 App Store 审核或 Ad Hoc 分发,最多 3 个。
描述文件和证书对应开发或发布类型。开发描述文件需要绑定测试设备的 UDID,发布描述文件不绑定设备。一个证书可以被多个描述文件引用。
证书的生命周期管理
iOS 证书有效期是一年。到期后已上架的 App 不受影响------用户已经安装的使用旧证书的应用可以正常运行。但如果要提交版本更新,必须用新证书重新打包。
建议在证书到期前一个月开始续期操作。在 Apple Developer Center 或 Appuploader 中重新生成证书,然后用新证书创建描述文件。旧证书的 P12 文件可以不再使用,但建议保留备份以备查证。
证书安全
P12 文件包含私钥,设置密码保护是必需的。生成证书时设置的密码建议统一管理,不要用过于简单的密码。不同项目的证书密码不要混用。
P12 文件不要通过明文方式传输。上传到共享存储时建议压缩加密码,或者使用 Appuploader 的证书同步功能------勾选后证书可以跨电脑下载使用,避免 P12 文件在传输过程中泄露。免费的开发账号只有 7 天有效期,到期删除后重新生成。
多设备多成员管理
个人开发者一台 Mac 管理证书比较简单------钥匙串里装好,Xcode 自动关联。团队协作的复杂度就上来了。不同成员的 Mac 都需要导入 P12 文件。如果某人的 P12 密码忘了或者文件丢了,所有依赖这个证书的描述文件和打包流程都会受影响。
建议由一个人统一管理证书和描述文件。在 Appuploader 中创建证书后,开启证书同步功能。其他成员登录同一账号后可以直接使用,不需要单独传递 P12。描述文件也集中管理,设备列表更新时在工具里直接修改。
如果使用 Fastlane match,可以通过 Git 仓库加密管理证书。match 用加密的 Git 仓库同步所有证书和描述文件,配合 Appuploader 的命令行版做上传。这样可以做到证书的版本化管理。
常见问题
证书安装报错"Valid signing identity not found"------重新下载证书并导入钥匙串或 Appuploader。描述文件提示设备未包含在列表中------在描述文件管理中更新设备 UDID。Build 时签名错误------检查项目 Build Settings 中的 Code Signing Identity 是否选择了正确的证书。