集成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 Developmentdevelopment profile装到自己的设备或模拟器调试。
TestFlight / App StoreApple DistributionApp 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,通用顺序是:

  1. 在工程配置里固定 Bundle ID。
  2. 在 Apple Developer 注册同一个 App ID,并开启当前需要的 capabilities。
  3. 用 development 签名先确认真机能安装和运行。
  4. 用 TestFlight 或 Ad Hoc 做内测;Ad Hoc 设备要先登记。
  5. 准备 production 构建和 App Store Connect app record,再提交审核。

更具体的命令行与协作流程,见 用 AI 和 ASC CLI 上架 iOS App

自动签名还是手动签名

适合自动签名:

  • 个人或小团队,证书权限不复杂。
  • 愿意让 Xcode 或构建服务托管 signing credentials。
  • App ID 和 capabilities 已经在 Apple Developer 后台确认无误。

适合手动管理:

  • 公司有严格的证书权限管理。
  • 不希望第三方托管 signing credentials。
  • 多个构建系统要共用同一套证书。

官方资料

这篇文档有问题?