要在 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 申请证书时需要提交的文件,使用钥匙串访问来创建。
- 打开钥匙串访问(在 Spotlight 中搜索"钥匙串")
- 在菜单栏中选择
钥匙串访问→证书助理→从证书颁发机构请求证书...

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

- 点击"继续",将 CSR 文件(
.certSigningRequest)保存到任意位置。
Step 2 — 在 Apple Developer Portal 新建证书
访问 Apple Developer 网站来申请证书。
访问地址:
developer.apple.com › Account › Certificates, IDs & Profiles › Certificates
-
点击右上角的
+(添加)按钮

-
在 Software 部分选择
Apple Distribution,然后点击"Continue"

-
在"Upload a Certificate Signing Request"界面,上传 Step 1 中创建的
.certSigningRequest文件 -
点击"Continue"→"Download",下载证书文件(
.cer)

Step 3 — 下载证书并安装到钥匙串
- 双击下载的
distribution.cer文件 - 出现"添加到钥匙串?"对话框时,点击"添加"
- 打开钥匙串访问,在登录钥匙串的"证书"类别中进行确认
- 如果显示
Apple Distribution: [Your Name/Team] (XXXXXXXXXX)即表示成功
点击证书左侧的 ▶ 展开按钮,确认是否显示私钥(🔑)。若看不到私钥,说明 CSR 是在不同的 Mac 上生成的,或者当前 Mac 的钥匙串中不存在私钥。
Step 4 — 确认 Xcode 已识别证书
确认位置:
Xcode › Settings... › Accounts › Manage Certificates...
- 选择目标 Apple ID,点击"Manage Certificates..."
- 确认列表中显示了
Apple Distribution条目 - 在项目的 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 年。过期后按相同步骤重新申请即可。旧证书仍可用于验证已归档的构建。
建议按如下顺序更新:
- 创建新的 Apple Distribution 证书
- 根据需要重新生成 Distribution 描述文件
- 更新 Xcode 或 CI/CD 中使用的证书和描述文件
- 如团队共享,将新的
.p12重新分发至相关 Mac
🔴 "Maximum number of certificates generated" 错误
Apple Developer Program 每个团队最多可发行 3 张 Distribution 证书。请删除不需要的证书后再重新创建。
总结
- 使用钥匙串访问生成 CSR(
.certSigningRequest) - 在 developer.apple.com 新建
Apple Distribution证书并上传 CSR - 双击下载的
.cer将其安装到钥匙串 - 在 Xcode 的 Accounts 设置中确认证书已被识别
证书管理初看复杂,但熟悉流程后便可轻松完成。对于团队开发,建议研究 .p12 的安全共享方式,或考虑使用 Fastlane Match 等工具实现自动化。
参考链接(Apple 官方)
- Certificates – Apple Developer:证书创建与管理页面
- Choosing a Membership – Apple Developer:免费账户与 Developer Program 的区别
- What is app signing? – Xcode Help:证书种类与概述
- Signing & Capabilities workflow – Xcode Help:自动签名的工作原理
- Create, export, and delete signing certificates – Xcode Help:Xcode 中的证书操作
- Distribute your app – Apple Developer:应用分发官方指南
- TestFlight – Apple Developer:TestFlight Beta 测试官方指南
