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 是否选择了正确的证书。