iOSAppleXcodeApp StoreCode Signing

Apple Distribution 证书创建步骤总结

Sloth255
Sloth255
·5 min read·1,072 words

要在 App Store 发布 iOS 应用,Apple Distribution 证书是必不可少的。该证书用于对应用进行代码签名,让 Apple 能够验证该应用由合法开发者构建。

本文将使用 Apple Developer Program 控制台,从头开始详细讲解证书的创建步骤。


事前准备

创建证书之前,请确认以下条件:

  • 已加入 Apple Developer Program(每年 $99 美元)
  • 使用具有 Admin 或 Account Holder 权限的 Apple ID 登录
  • Mac 上已安装 Xcode(建议使用最新版本)
  • 可以使用"钥匙串访问"(macOS 内置应用)

Step 1 — 创建 CSR(证书签名请求)文件

CSR(Certificate Signing Request)是向 Apple 申请证书时需要提交的文件,使用钥匙串访问来创建。

  1. 打开钥匙串访问(在 Spotlight 中搜索"钥匙串")
  2. 在菜单栏中选择 钥匙串访问证书助理从证书颁发机构请求证书...

钥匙串访问的证书助理界面

  1. 填写以下信息:

    字段 内容
    用户电子邮件地址 Apple ID 注册使用的邮箱
    常用名称 易于识别的名称(例如:MyApp Distribution
    CA 电子邮件地址 留空即可
    请求内容 选择**"存储到磁盘"**

CSR 保存位置选择界面

  1. 点击"继续",将 CSR 文件(.certSigningRequest)保存到任意位置。

Step 2 — 在 Apple Developer Portal 新建证书

访问 Apple Developer 网站来申请证书。

访问地址:
developer.apple.com › Account › Certificates, IDs & Profiles › Certificates

  1. 点击右上角的 +(添加)按钮
    Apple Developer 证书列表界面

  2. Software 部分选择 Apple Distribution,然后点击"Continue"
    选择 Apple Distribution 的界面

  3. 在"Upload a Certificate Signing Request"界面,上传 Step 1 中创建的 .certSigningRequest 文件

  4. 点击"Continue"→"Download",下载证书文件(.cer
    下载证书文件的界面


Step 3 — 下载证书并安装到钥匙串

  1. 双击下载的 distribution.cer 文件
  2. 出现"添加到钥匙串?"对话框时,点击"添加"
  3. 打开钥匙串访问,在登录钥匙串的"证书"类别中进行确认
  4. 如果显示 Apple Distribution: [Your Name/Team] (XXXXXXXXXX) 即表示成功

点击证书左侧的 ▶ 展开按钮,确认是否显示私钥(🔑)。若看不到私钥,说明 CSR 是在不同的 Mac 上生成的,或者当前 Mac 的钥匙串中不存在私钥。


Step 4 — 确认 Xcode 已识别证书

确认位置:
Xcode › Settings... › Accounts › Manage Certificates...

  1. 选择目标 Apple ID,点击"Manage Certificates..."
  2. 确认列表中显示了 Apple Distribution 条目
  3. 在项目的 Signing & Capabilities 标签页中,关闭 Automatically manage signing 后,即可手动选择 Distribution 证书

证书与描述文件的关系

Apple 的签名体系由以下三个要素构成:

  • 证书(Certificate):证明对应用进行签名的开发者或团队身份
  • App ID:用于识别具体是哪个应用
  • 描述文件(Provisioning Profile):定义哪种证书、App ID、设备及功能的组合被授权运行或分发应用

简单来说,证书标识签名者App ID 标识应用描述文件是一组使用条件。仅创建证书还不足以分发应用——还需要与分发方式匹配的描述文件。


与 Apple Development 证书的区别

iOS 开发根据用途使用两种证书。以下仅从证书本身的性质进行比较。

项目 Apple Development Apple Distribution
所有者 个人(证书名中附加 Mac 名称) 团队(仅 Account Holder / Admin 可创建)
多台 Mac 使用 ✅ 可以(个人所有,通过 .p12 迁移至其他 Mac) ✅ 可以(可共享给团队,通过 .p12 导出共享)
用途 实机调试与测试 App Store / Ad Hoc 分发
TestFlight 分发 ❌ 不可 ✅ 可以
Xcode 签名 用于 Debug scheme 用于 Release scheme
最大发行数量 每团队 2 张 每团队 3 张
有效期 1 年 1 年

开发阶段使用 Apple Development 证书进行构建和调试,发布时使用 Apple Distribution 证书进行归档和签名,是标准流程。


Apple Development 证书与个人账户的区别

容易混淆的是 Apple Development 证书 与免费 Apple 账户中的 Personal Team。两者并不相同。

  • Apple Development 证书:加入 Apple Developer Program 的团队使用的正式开发证书
  • Personal Team:无需加入 Developer Program,即可通过 Xcode 在实机上进行测试的开发工作流
项目 Personal Team(免费账户) Apple Development(Developer Program)
使用条件 仅需 Apple 账户 需加入 Apple Developer Program
主要用途 个人实机测试 团队开发 / 持续开发签名
分发 ❌ 不可 ❌ 不可(仅限开发用途)
TestFlight / App Store Connect ❌ 不可 ❌ 不可
描述文件有效期 7 天 通常 1 年
可注册的 App ID / 设备 有限制 在 Developer Program 范围内可用
高级功能 / 服务 有限制 可使用更多功能

免费账户的 Personal Team 适合学习和个人验证。若需进行 App Store 分发、TestFlight、Ad Hoc 分发或持续的团队开发,则需加入 Apple Developer Program 并使用 Apple Development / Apple Distribution 证书。


按分发方式的对应表

分发方式 证书 描述文件 备注
实机调试 Apple Development Development 仅限已注册设备运行
TestFlight Apple Distribution App Store Connect 用 Distribution 上传至 App Store Connect 后分发
App Store 发布 Apple Distribution App Store Connect 用 Distribution 审核通过后公开发布
Ad Hoc 分发 Apple Distribution Ad Hoc 仅限已注册 UDID 的设备
企业 / In-House 分发 Apple Enterprise Distribution In-House 需要 Apple Developer Enterprise Program

容易混淆的点:TestFlight 和 App Store 发布均使用 Apple Distribution 证书。Apple Development 证书仅用于开发,无法上传至 App Store Connect。


自动签名与手动签名的选择

通常建议在 Xcode 中启用 Automatically manage signing。Xcode 会自动管理 Development / Distribution 签名资产和描述文件,对个人开发者和小型团队来说最为安全。

在以下情况下,可考虑使用手动签名

  • 需要对多个 Target 或 Bundle Identifier 进行严格管理
  • 希望在 CI/CD 中明确管理签名资产
  • 使用 Fastlane Match 等工具统一管理证书和描述文件
  • Xcode 自动生成的描述文件无法满足需求

如果不确定,建议先从自动签名开始,随着 CI 引入或团队规模扩大,再迁移到手动签名。


常见错误与解决方法

🔴 提示"证书没有私钥"

以下情况会触发此提示:

  • 在其他 Mac 上安装了 .cer:私钥仅存在于生成 CSR 的 Mac 上
  • Mac 迁移或更换:迁移助理可能传输了证书,但未正确迁移钥匙串中的私钥
  • 重置或修复了钥匙串:即使是同一台 Mac,钥匙串被初始化后私钥也会丢失
  • 从 Apple Developer 门户重新下载了 .cer:在与生成 CSR 不同的 Mac 上下载时

上述情况均需从生成 CSR 的原始 Mac 以 .p12 格式导出,并在当前 Mac 上导入。若原始 Mac 不可用或钥匙串损坏,需撤销证书并用新的 CSR 重新申请。

# .p12 导出步骤(钥匙串访问)
# 1. 打开钥匙串访问
# 2. 右键点击目标证书
#    → 选择"导出'Apple Distribution: ...'"
# 3. 设置密码并保存 .p12 文件
# 4. 在其他 Mac 上双击导入

🔴 证书已过期

Apple Distribution 证书的有效期为 1 年。过期后按相同步骤重新申请即可。旧证书仍可用于验证已归档的构建。

建议按如下顺序更新:

  1. 创建新的 Apple Distribution 证书
  2. 根据需要重新生成 Distribution 描述文件
  3. 更新 Xcode 或 CI/CD 中使用的证书和描述文件
  4. 如团队共享,将新的 .p12 重新分发至相关 Mac

🔴 "Maximum number of certificates generated" 错误

Apple Developer Program 每个团队最多可发行 3 张 Distribution 证书。请删除不需要的证书后再重新创建。


总结

  1. 使用钥匙串访问生成 CSR(.certSigningRequest
  2. developer.apple.com 新建 Apple Distribution 证书并上传 CSR
  3. 双击下载的 .cer 将其安装到钥匙串
  4. Xcode 的 Accounts 设置中确认证书已被识别

证书管理初看复杂,但熟悉流程后便可轻松完成。对于团队开发,建议研究 .p12 的安全共享方式,或考虑使用 Fastlane Match 等工具实现自动化。


参考链接(Apple 官方)