iOS证书(.p12)和描述文件(.mobileprovision)申请

iOS有两种证书和描述文件:

证书类型 使用场景

  • 开发(Development)证书和描述文件 用于开发测试,在 HBuilderX 中打包后可在真机环境通过Safari调试
  • 发布(Distribution)证书和描述文件 用于提交 AppStore,在 HBuilderX 中提交云打包后提交到 AppStore 审核发布

准备环境

  • 必需要有苹果开发者账号,并且加入了 “iOS Developer Program”
  • Mac OS 10.9以上系统(如果已经申请p12证书则不需要)

登录 iOS Dev Center

打开网站 iOS Dev Center

使用苹果开发者账号登录 iOS Dev Center:

img.png

登录成功后在页面左侧选择 “Certificates,IDs & Profiles” 进入证书管理页面:

img.png

在证书管理页面,可以看到所有已经申请的证书及描述文件:

img.png

下面我们从头开始学习一下如何申请开发证书、发布证书及相对应的描述文件。

首先需要申请苹果 App ID (App的唯一标识)

如果已经申请,可跳过此节

选择页面的 “Identifiers” 可查看到已申请的所有 App 应用标识,点击页面上的加号来创建一个新的应用标识:

img.png

选择标识类型为 “App IDs”,然后点击 “Continue”

img.png

平台选择 “iOS,tvOS,watchOS”,Bundle ID 选择 “Explicit”,在 Description 中填写描述,然后填写 Bundle ID,Bundle ID 要保持唯一性,建议填写反域名加应用标识的格式 如:“io.dcloud.hellouniapp”, 然后点击 “Continue”

注意:在 HBuilderX 中 App 提交云端打包时界面上的 AppID 栏填写的就是这个 Bundle ID

img.png

接下来需要选择应用需要使用的服务(如需要使用到消息推送功能,则选择“Push Notifications”),然后点击 “Continue”
注意:如果App用不到的服务一定不要勾选,以免响应审核

img.png

确认后选择提交,回到 identifiers 页面即可看到刚创建的App ID:

img.png

至此,App ID 已经创建完毕,接下来开始创建开发证书,在创建开发证书前,需要先生成证书请求文件

生成证书请求文件

不管是申请开发 (Development) 证书还是发布 (Distribution) 证书,都需要使用证书请求 (.certSigningRequest) 文件,证书请求文件需在Mac OS上使用 “钥匙串访问” 工具生成。

在“Spltlight Search”中搜索“钥匙串”并打开 “钥匙串访问” 工具:

img.png

img.png

打开菜单 “钥匙串访问”->“证书助理”,选择“从证书颁发机构请求证书…”:

img.png

打开创建请求证书页面,在页面中输入用户邮件地址、常用名称,选择存储到磁盘,点击 “继续” :

img.png

文件名称为“CertificateSigningRequest.certSigningRequest”,选择保存位置,点击 “存储” 将证书请求文件保存到指定路径下,后面申请开发(Development)证书和发布(Production)证书时需要用到

img.png

申请开发(Development)证书和描述文件

开发(Development)证书及对应的描述文件用于开发阶段使用,可以直接将 App 安装到手机上,一个描述文件最多绑定100台测试设备(开发证书不能用于发布应用到 App Store)。

申请开发(Development)证书

在证书管理页面选择 “Certificates” 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution为发布证书),点击页面的加号来创建一个新的证书:

img.png

在 “Software” 栏下选中 “iOS App Development” 然后点击 “Continue”:

img.png

接下来需要用到刚刚生成的证书请求文件,点击“Choose File…”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件:

img.png

生成证书后选择 “Download” 将证书下到本地 (ios_development.cer):

img.png

双击保存到本地的 ios_development.cer 文件,会自动打开 “钥匙串访问” 工具说明导入证书成功,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键选择 “导出…”:

img.png

输入文件名、选择路径后点击 “存储”:

img.png

输入密码及确认密码后点击 “好”:

img.png

至此,我们已经完成了开发证书的制作(得到了 xxx.p12 证书文件),接下来,继续生成开发阶段所需的描述文件,在生成描述文件之前,需要先添加调试设备(iPhone 、iPad)

添加调试设备

开发描述文件必须绑定调试设备,只有授权的设备才可以直接安装 App,所以在申请开发描述文件之前,先添加调试的设备。
(如果已经添加设备,可跳过此节)

在证书管理页面选择 “Devices”,可查看到已添加的所有设备信息,点击页面上的加号来添加一个新设备:

img.png

填写设备名称 和 UDID(设备标识):

img.png

获取设备UDID方法,将设备连接到电脑,启动 iTunes,点击此区域可切换显示设备的 UDID,右键选择复制

输入完成后,点击“Continue” 继续完成添加即可;

接下来继续申请描述文件

申请开发 (Development) 描述文件

在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:

img.png

在 “Development” 栏下选中 “iOS App Development”,点击“Continue”按钮:

img.png

这里要选择之前创建的 “App ID” (这里是“io.dcloud.hellouniapp”),点击“Continue”:

img.png

接下来选择需要绑定的证书,这里建议直接勾选 “Select All”,点击“Continue”:

img.png

选择授权调试设备,这里建议直接勾选 “Select All”,点击 “Continue”:

img.png

输入描述文件的名称(如“HelloUniAppProfile”), 点击 “Generate” 生成描述文件:

img.png

点击“Download”下载保存开发描述文件(文件后缀为 .mobileprovision)

img.png

至此,我们已经得到了开发证书(.p12)及对应的描述文件(.mobileprovision),接下看一下如何制作发布证书及发布描述文件

申请发布(Distribution)证书和描述文件

发布 (Production) 证书用于正式发布环境下使用,用于提交到Appstore审核发布。发布证书打包的 ipa,不可以直接安装到手机上

申请发布(Production)证书

在证书管理页面选择 “Certificates” 可查看到已申请的所有证书(TYPE:Development 为开发证书,Distribution为发布证书),点击页面的加号来创建一个新的证书:

img.png

在 “Software” 栏下选中 “App Store and Ad Hoc”,点击 “Continue”:

img.png

接下来同样需要用到之前生成的证书请求文件,点击“Choose File…”选择刚刚保存到本地的 “CertificateSigningRequest.certSigningRequest”文件,点击 “Continue” 生成证书文件:

img.png

生成证书成功,选择“Download” 将证书下载到本地 (ios_production.cer):

img.png

同样双击保存到本地的 ios_production.cer 文件将证书导入到 “钥匙串访问”工具中,可以在证书列表中看到刚刚导入的证书,接下来需要导出 .p12 证书文件,选中导入的证书,右键选择 “导出…”:

img.png

输入文件名、选择路径后点击 “存储”:

img.png

输入密码及确认密码后点击 “好”:

img.png

至此,我们已经完成了发布证书的制作(得到了 xxx.p12 证书文件),接下来,继续生成发布描述文件

申请发布 (Distribution) 描述文件

在证书管理页面选择 “Profiles”,可查看到已申请的所有描述文件,点击页面上的加号来添加一个新的描述文件:

img.png

在 “Distribution” 栏下选中 “App Store”,点击“Continue”按钮:

img.png

这里要选择之前创建的 “App ID” (这里是“io.dcloud.hellouniapp”),点击“Continue”:

img.png

接下来选择需要绑定的发布证书(iOS Distribution),这里勾选刚刚生成的发布证书”,点击“Continue”:

img.png

接下来输入描述文件的名称(如“HelloUniAppProfileDistribution”), 点击 “Generate” 生成描述文件:

img.png

然后点击 “Download” 将描述文件下载到本地(文件后缀为 .mobileprovision)

至此,我们已经得到了发布证书(.p12)及对应的发布描述文件(.mobileprovision)

引言

iOS应用开发中,证书和描述文件是必不可少的配置。正确申请和配置iOS证书(.p12)和描述文件(.mobileprovision)是iOS应用开发、真机调试、打包发布的基础。理解证书和描述文件的作用、申请流程和配置方法,对于iOS开发者至关重要。

本文将深入探讨iOS证书和描述文件的申请流程,从CSR文件生成、开发证书申请、发布证书申请到描述文件创建和证书导出,提供完整的企业级iOS开发配置解决方案。

第一部分:iOS证书与描述文件基础概念

1.1 证书与描述文件的作用

iOS开发中,证书和描述文件是苹果安全机制的核心组件:

证书(Certificates)的作用:

  • 为Mac电脑提供开发和发布能力
  • 证明开发者身份
  • 用于代码签名,确保应用来源可信
  • 支持真机调试和App Store发布

描述文件(Provisioning Profile)的作用:

  • 将证书、App ID和设备关联起来
  • 定义应用的权限和能力
  • 指定可以安装应用的设备
  • 区分开发环境和生产环境

1.2 证书类型详解

iOS证书主要分为两大类:

1. 开发证书(Development Certificate)

  • iOS App Development:用于真机调试和开发测试
  • Apple Development:Xcode 11+推荐使用的通用开发证书
  • 有效期:通常1年
  • 用途:真机调试、开发阶段测试

2. 发布证书(Distribution Certificate)

  • **iOS Distribution (App Store)**:用于App Store发布
  • **iOS Distribution (Ad Hoc)**:用于Ad Hoc分发
  • Apple Distribution:Xcode 11+推荐使用的通用发布证书
  • 有效期:通常1年
  • 用途:App Store上架、企业内部分发

3. 服务证书(Services Certificate)

  • Apple Push Notification service SSL:推送通知服务
  • Pass Type ID Certificate:Passbook服务
  • 其他服务证书:根据应用需求申请

1.3 描述文件类型

1. 开发描述文件(Development Provisioning Profile)

  • 用于开发阶段真机调试
  • 需要指定测试设备
  • 关联开发证书和App ID

2. 发布描述文件(Distribution Provisioning Profile)

  • App Store:用于App Store发布
  • Ad Hoc:用于指定设备分发
  • Enterprise:企业内部分发(需要企业账号)

1.4 证书与Mac的关系

重要概念:

  • 证书与Mac电脑绑定,基于CSR文件创建
  • 一台Mac只需要一套证书即可开发多个App
  • 证书可以导出为.p12文件供其他Mac使用
  • 证书数量有限制,需要合理管理

第二部分:CSR文件生成

2.1 什么是CSR文件

CSR(Certificate Signing Request)是证书签名请求文件,用于向苹果申请证书。CSR文件包含:

  • 公钥信息
  • 开发者信息
  • Mac电脑的标识信息

2.2 生成CSR文件步骤

步骤1:打开钥匙串访问工具

  1. 打开”应用程序” -> “实用工具” -> “钥匙串访问”
  2. 或者使用Spotlight搜索”钥匙串访问”

步骤2:创建证书请求

  1. 点击菜单栏”钥匙串访问” -> “证书助理” -> “从证书颁发机构请求证书…”
  2. 重要:不要选中证书列表中的任何证书,否则菜单会不同

步骤3:填写证书信息

1
2
3
4
用户电子邮件地址:your-email@example.com
常用名称:你的名字或公司名称
CA电子邮件地址:留空
选择"存储到磁盘"

步骤4:保存CSR文件

  1. 点击”继续”
  2. 选择保存位置(建议桌面)
  3. 文件名会自动生成,建议重命名为便于识别的名称,如:
    • iOS_Development_CSR.certSigningRequest
    • iOS_Distribution_CSR.certSigningRequest

2.3 CSR文件注意事项

注意事项:

  • 一个CSR文件可以用于申请多个证书
  • CSR文件与Mac电脑绑定
  • 建议为开发证书和发布证书分别创建CSR文件(可选)
  • 保存好CSR文件,后续可能需要重新申请证书

第三部分:开发证书申请

3.1 登录Apple Developer

步骤1:访问开发者中心

  1. 访问 https://developer.apple.com/
  2. 点击”Account”登录
  3. 使用Apple ID登录

步骤2:进入证书管理

  1. 登录后点击”Certificates, Identifiers & Profiles”
  2. 进入证书管理界面

3.2 申请iOS App Development证书

步骤1:创建新证书

  1. 点击左侧”Certificates”
  2. 点击右上角”+”按钮
  3. 选择证书类型:
    • iOS App Development:传统开发证书
    • Apple Development:Xcode 11+推荐(通用开发证书)

步骤2:上传CSR文件

  1. 选择”Continue”
  2. 点击”Choose File”选择之前生成的CSR文件
  3. 点击”Continue”

步骤3:下载证书

  1. 证书创建成功后,点击”Download”
  2. 下载的证书文件通常命名为:
    • development.cer(iOS App Development)
    • ios_development.cer(Apple Development)

步骤4:安装证书

  1. 双击下载的.cer文件
  2. 系统会自动打开钥匙串访问工具
  3. 证书会安装到”我的证书”分类中
  4. 证书名称显示为开发者账号的Team名称

3.3 验证证书安装

验证方法:

  1. 打开钥匙串访问工具
  2. 选择”我的证书”分类
  3. 查看是否出现新安装的证书
  4. 证书应该显示为:
    • 名称:开发者账号Team名称
    • 类型:iOS Developer 或 Apple Development
    • 有效期:通常1年

第四部分:发布证书申请

4.1 申请iOS Distribution证书

步骤1:创建发布证书

  1. 在”Certificates”页面点击”+”
  2. 选择证书类型:
    • **iOS Distribution (App Store and Ad Hoc)**:用于App Store发布和Ad Hoc分发
    • Apple Distribution:Xcode 11+推荐(通用发布证书)

步骤2:上传CSR文件

  1. 选择”Continue”
  2. 上传CSR文件(可以使用与开发证书相同的CSR文件)
  3. 点击”Continue”

步骤3:下载并安装

  1. 下载证书文件(通常命名为distribution.cerios_distribution.cer
  2. 双击安装到钥匙串

4.2 证书管理最佳实践

证书管理建议:

  • 一台Mac只需要一套证书(开发+发布)
  • 证书可以用于多个App开发
  • 定期检查证书有效期
  • 及时删除过期或不需要的证书
  • 导出.p12文件备份,便于在其他Mac上使用

第五部分:App ID创建

5.1 什么是App ID

App ID是应用的唯一标识符,包含:

  • Bundle ID:应用包名(如:com.company.appname)
  • 应用能力:推送通知、应用内购买等

5.2 创建App ID步骤

步骤1:进入Identifiers

  1. 在”Certificates, Identifiers & Profiles”页面
  2. 点击左侧”Identifiers”
  3. 点击右上角”+”

步骤2:选择App IDs

  1. 选择”App IDs”
  2. 点击”Continue”

步骤3:配置App ID

1
2
3
4
Description:应用描述(如:My iOS App)
Bundle ID:
- Explicit:精确的Bundle ID(如:com.company.appname)
- Wildcard:通配符Bundle ID(如:com.company.*)

步骤4:选择应用能力
根据需要选择应用能力:

  • App Services:推送通知、应用内购买等
  • Capabilities:iCloud、Apple Pay等

步骤5:注册App ID

  1. 点击”Continue”
  2. 确认信息后点击”Register”
  3. App ID创建完成

第六部分:描述文件创建

6.1 创建开发描述文件

步骤1:进入Profiles

  1. 点击左侧”Profiles”
  2. 点击右上角”+”

步骤2:选择描述文件类型

  1. 选择”iOS App Development”
  2. 点击”Continue”

步骤3:选择App ID

  1. 选择之前创建的App ID
  2. 点击”Continue”

步骤4:选择证书

  1. 选择开发证书(iOS App Development或Apple Development)
  2. 可以多选(团队协作时)
  3. 点击”Continue”

步骤5:选择设备

  1. 选择用于测试的设备
  2. 设备需要先在”Devices”中注册
  3. 可以多选设备
  4. 点击”Continue”

步骤6:命名并生成

  1. 输入描述文件名称(如:MyApp Development)
  2. 点击”Generate”
  3. 下载描述文件(.mobileprovision)

6.2 创建发布描述文件

步骤1:选择发布类型

  1. 在”Profiles”页面点击”+”
  2. 选择发布类型:
    • App Store:用于App Store发布
    • Ad Hoc:用于指定设备分发
    • Enterprise:企业内部分发(需要企业账号)

步骤2:配置描述文件

  1. 选择App ID
  2. 选择发布证书
  3. 如果是Ad Hoc,需要选择设备
  4. 命名并生成

6.3 描述文件安装

安装方法:

  1. 双击安装:双击.mobileprovision文件,系统会自动安装
  2. Xcode安装:在Xcode中自动下载和安装
  3. 手动安装:拖拽到Xcode的Devices and Simulators窗口

验证安装:

  • 在Xcode的Preferences -> Accounts -> 选择账号 -> View Details中查看
  • 或者在”~/Library/MobileDevice/Provisioning Profiles”目录查看

第七部分:p12证书导出

7.1 为什么需要导出p12

使用场景:

  • 多人协作开发,需要在其他Mac上使用证书
  • 备份证书,防止证书丢失
  • CI/CD自动化构建需要证书
  • 云打包服务需要上传证书

7.2 导出p12证书步骤

步骤1:打开钥匙串访问

  1. 打开”钥匙串访问”工具
  2. 选择”我的证书”分类
  3. 找到要导出的证书

步骤2:展开证书

  1. 点击证书左侧的三角形展开
  2. 可以看到证书和对应的私钥
  3. 同时选中证书和私钥(按住Command键多选)

步骤3:导出证书

  1. 右键点击选中的证书和私钥
  2. 选择”导出2个项目…”
  3. 或者使用菜单:文件 -> 导出项目

步骤4:配置导出选项

1
2
3
4
5
文件格式:个人信息交换(.p12)
文件名:建议使用有意义的名称,如:
- iOS_Development.p12
- iOS_Distribution.p12
保存位置:选择安全的位置

步骤5:设置密码

  1. 输入p12证书密码(重要:记住这个密码)
  2. 确认密码
  3. 点击”好”
  4. 如果提示输入钥匙串密码,输入Mac登录密码

7.3 p12证书使用

在其他Mac上安装:

  1. 将.p12文件传输到目标Mac
  2. 双击.p12文件
  3. 输入之前设置的密码
  4. 输入Mac登录密码(如果需要)
  5. 证书安装完成

在HBuilderX中使用:

  1. 打开HBuilderX
  2. 发行 -> 原生App-云打包
  3. 选择iOS平台
  4. 上传.p12文件和.mobileprovision文件
  5. 输入p12证书密码

在CI/CD中使用:

  1. 将.p12文件添加到CI/CD系统的密钥管理
  2. 配置证书路径和密码
  3. 在构建脚本中使用证书进行签名

7.4 p12证书安全注意事项

安全建议:

  • 设置强密码保护p12文件
  • 不要将p12文件提交到代码仓库
  • 使用安全的文件传输方式
  • 定期更换证书和密码
  • 限制p12文件的访问权限

第八部分:证书与描述文件配置实战

8.1 Xcode配置

步骤1:添加Apple ID

  1. 打开Xcode
  2. Preferences -> Accounts
  3. 点击左下角”+”
  4. 选择”Apple ID”
  5. 输入Apple ID和密码

步骤2:自动管理证书

  1. 在项目设置中选择Target
  2. 选择”Signing & Capabilities”
  3. 勾选”Automatically manage signing”
  4. Xcode会自动创建和管理证书和描述文件

步骤3:手动配置证书

  1. 取消”Automatically manage signing”
  2. 选择Provisioning Profile
  3. 选择对应的证书

8.2 HBuilderX配置

步骤1:准备证书文件

  • .p12证书文件
  • .mobileprovision描述文件
  • 证书密码

步骤2:配置打包参数

  1. 发行 -> 原生App-云打包
  2. 选择iOS平台
  3. 填写应用信息:
    1
    2
    3
    4
    App名称:应用显示名称
    Bundle ID:与App ID一致
    版本号:应用版本
    构建号:每次打包递增

步骤3:上传证书

  1. 选择.p12证书文件
  2. 输入证书密码
  3. 选择.mobileprovision描述文件
  4. 点击”打包”

8.3 命令行配置

使用命令行工具签名:

1
2
3
4
5
6
7
8
9
10
11
# 查看证书
security find-identity -v -p codesigning

# 查看描述文件
ls ~/Library/MobileDevice/Provisioning\ Profiles/

# 使用codesign签名
codesign --sign "证书名称" --entitlements entitlements.plist app.app

# 验证签名
codesign --verify --verbose app.app

第九部分:常见问题与解决方案

9.1 证书相关问题

问题1:证书过期

1
2
3
4
5
症状:无法打包,提示证书过期
解决方案:
1. 删除过期证书
2. 重新申请新证书
3. 更新描述文件

问题2:证书数量限制

1
2
3
4
5
症状:无法创建新证书,提示数量限制
解决方案:
1. 删除不需要的证书
2. 使用现有证书
3. 导出.p12文件供其他Mac使用

问题3:证书与Mac不匹配

1
2
3
4
症状:证书无法使用,提示不匹配
解决方案:
1. 使用对应Mac的CSR文件申请证书
2. 或者导出.p12文件安装到目标Mac

9.2 描述文件相关问题

问题1:描述文件过期

1
2
3
4
5
症状:无法安装到设备,提示描述文件过期
解决方案:
1. 重新生成描述文件
2. 下载并安装新描述文件
3. 在Xcode中刷新描述文件

问题2:设备未注册

1
2
3
4
5
症状:无法安装到设备
解决方案:
1. 在Apple Developer中添加设备UDID
2. 重新生成描述文件
3. 安装新描述文件

问题3:Bundle ID不匹配

1
2
3
4
5
症状:打包失败,提示Bundle ID不匹配
解决方案:
1. 检查App ID的Bundle ID
2. 确保Xcode项目中的Bundle ID一致
3. 检查描述文件中的App ID

9.3 p12证书问题

问题1:p12密码错误

1
2
3
4
5
症状:无法使用p12文件,提示密码错误
解决方案:
1. 确认密码正确
2. 重新导出p12文件并设置新密码
3. 检查密码输入是否正确

问题2:p12文件损坏

1
2
3
4
5
症状:无法安装p12文件
解决方案:
1. 重新导出p12文件
2. 确保文件传输完整
3. 检查文件权限

问题3:私钥丢失

1
2
3
4
5
症状:证书无法使用,提示私钥丢失
解决方案:
1. 从钥匙串中检查私钥是否存在
2. 如果私钥丢失,需要重新申请证书
3. 建议定期备份p12文件

第十部分:企业级最佳实践

10.1 证书管理策略

团队协作建议:

  • 统一使用一套证书(开发+发布)
  • 导出p12文件供团队成员使用
  • 建立证书管理文档
  • 定期更新证书

证书备份:

  • 导出p12文件并安全存储
  • 保存CSR文件
  • 记录证书密码
  • 使用密码管理器管理密码

10.2 描述文件管理

描述文件管理建议:

  • 为不同环境创建不同描述文件
  • 定期更新描述文件
  • 及时删除不需要的描述文件
  • 建立描述文件命名规范

10.3 安全最佳实践

安全建议:

  • 使用强密码保护p12文件
  • 不要将证书文件提交到代码仓库
  • 使用安全的文件传输方式
  • 限制证书文件的访问权限
  • 定期更换证书和密码

10.4 自动化配置

CI/CD集成:

  • 将证书配置到CI/CD系统
  • 使用环境变量管理证书密码
  • 自动化证书更新流程
  • 监控证书有效期

总结

iOS证书(.p12)和描述文件(.mobileprovision)的申请和配置是iOS开发的基础。通过本文的详细讲解,我们了解了:

  1. 证书和描述文件的作用:证书提供开发能力,描述文件关联证书、App ID和设备
  2. CSR文件生成:使用钥匙串访问工具生成CSR文件
  3. 开发证书申请:申请iOS App Development或Apple Development证书
  4. 发布证书申请:申请iOS Distribution或Apple Distribution证书
  5. App ID创建:创建应用的唯一标识符
  6. 描述文件创建:创建开发和发布描述文件
  7. p12证书导出:导出证书供其他Mac使用
  8. 配置实战:在Xcode、HBuilderX和命令行中配置证书
  9. 问题解决:常见问题的解决方案
  10. 最佳实践:企业级证书管理策略

掌握iOS证书和描述文件的申请流程,能够提高iOS开发效率,确保应用能够正常开发、测试和发布。在实际开发中,建议建立完善的证书管理流程,定期更新证书,确保开发工作的顺利进行。