集成Apple 平台
00 / 00
签名、证书和描述文件
用新手能理解的方式解释 Apple 为什么要签名,以及证书和 profile 的关系
创建 Bundle ID 只是给 App 取了一个固定身份证号。Apple 还要确认「这个安装包真的是这个团队做的,并且它被允许使用这些系统能力」。这就是签名、证书和 provisioning profile 要解决的问题。
为什么要签名
Apple 的签名机制主要解决三件事:
- 证明 App 来源,系统知道这个包来自哪个开发团队。
- 防止包被改,签名后内容被篡改,系统能发现。
- 约束能力,App 只能使用 profile 里允许的 App ID、设备、能力和分发方式。
Bundle ID
这个包说自己是谁。
Certificate
这个包由哪个团队签出来。
Provisioning Profile
Apple 批准这个组合能怎么运行。
Signed Build
最终能安装、测试或上传审核的包。
三个核心东西
| 名称 | 人话解释 | 常见来源 |
|---|---|---|
| Certificate,证书 | 开发团队的签字笔。没有它,包没有可信来源 | Apple Developer 后台创建,或 Xcode / CI 自动创建 |
| Private Key,私钥 | 签字笔真正的笔芯。丢了证书就无法在这台机器继续签 | 生成 CSR 的机器或构建系统托管凭据里保存 |
| Provisioning Profile,描述文件 | Apple 批准书。写明哪个 App ID、哪些能力、哪类分发能用 | Apple Developer 后台创建,或 Xcode / CI 自动创建 |
CSR 是 Certificate Signing Request。手动创建证书时,你在本机生成 CSR,Apple 根据 CSR 签发证书,私钥留在本机钥匙串里。
开发、TestFlight、正式分发有什么区别
| 场景 | 常见证书 | profile | 用途 |
|---|---|---|---|
| 本机开发 | Apple Development | development profile | 装到自己的设备或模拟器调试。 |
| TestFlight / App Store | Apple Distribution | App Store profile | 上传到 App Store Connect,再走 TestFlight 或审核。 |
| macOS 官网下载 | Developer ID Application | 通常不走 iOS profile 逻辑 | 签名后还要 notarization,让 Gatekeeper 信任。 |
构建系统在这里做什么
Xcode、Fastlane、CI 或第三方构建服务都可以帮你生成或托管证书和 profile。它们通常会处理:
- App Identifier,也就是 Apple Developer 里的 App ID。
- Distribution certificate。
- Provisioning profile。
- Push key 等可选凭据。
正式项目建议先手动注册 App ID 和 capabilities,再让构建系统处理证书和 profile,这样不容易生成偏离预期的身份。
自己做 iOS App 时的顺序
01MVP 当前模板不包含 iOS 客户端。你如果自己做 App,通用顺序是:
- 在工程配置里固定 Bundle ID。
- 在 Apple Developer 注册同一个 App ID,并开启当前需要的 capabilities。
- 用 development 签名先确认真机能安装和运行。
- 用 TestFlight 或 Ad Hoc 做内测;Ad Hoc 设备要先登记。
- 准备 production 构建和 App Store Connect app record,再提交审核。
更具体的命令行与协作流程,见 用 AI 和 ASC CLI 上架 iOS App。
自动签名还是手动签名
适合自动签名:
- 个人或小团队,证书权限不复杂。
- 愿意让 Xcode 或构建服务托管 signing credentials。
- App ID 和 capabilities 已经在 Apple Developer 后台确认无误。
适合手动管理:
- 公司有严格的证书权限管理。
- 不希望第三方托管 signing credentials。
- 多个构建系统要共用同一套证书。
官方资料
这篇文档有问题?