生成 iOS 证书和 Provisioning Profile

一、概述

1. 苹果开发者账号

创建 iOS 证书和 Profile 需使用付费的苹果账号,苹果开发者账号有三种,个人开发者、公司开发者、企业开发者,用途各有不同。

  • 个人开发者和公司开发者是 99 美刀/年,企业开发者是 299 美刀/年。
  • 企业开发者一般是大企业开发内部应用时使用,不能上架 App Store 的。

请先确保你已经有一个个人开发者或公司开发者账号

2. 证书介绍

证书有多种类型,用于不同的目的。以下是 iOS 证书的分类:

  • 开发者证书(Developer Certificate):用于在开发阶段对应用程序进行签名和调试。开发者证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
  • 分发证书(Distribution Certificate):用于将应用程序分发给其他用户或者上传到 App Store 进行审核。分发证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
  • 推送证书(Push Certificate):用于实现远程推送功能,可以让应用程序接收来自服务器的推送通知。推送证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。
  • 企业证书(Enterprise Certificate):用于将应用程序分发给企业内部员工或者客户。企业证书由苹果开发者中心颁发,需要使用 Xcode 或者其他开发工具进行申请和管理。

3. Provisioning Profile 介绍

配置文件(Provisioning Profiles)同样也分两种,分为开发(Development)和发布(Distribution),配置文件中包含了证书、App ID、设备(Devices),后缀名为 .mobileprovision。它在开发者账号体系中扮演着配置和验证的角色,是真机调试和打包上架必须的文件。

  • 一个 Provisioning Profile 对应一个 App ID(bundleId)
  • Provisioning Profile 决定 Xcode 用哪个证书(公钥)/私钥组合(Key Pair/Signing Identity)来签名应用程序(Signing Product),将在应用程序打包时嵌入到 .ipa 包里。
  • Provisioning Profile 把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用。这样,只要在不同的情况下选择不同的 Provisioning Profile 文件就可以了。
  • Provisioning Profile 也分为 Development 和 Distribution 两类,有效期同 Certificate 一样。Development 版本的 ProvisioningProfile 用于开发调试,Distribution 版本的 ProvisioningProfile 主要用于提交 App Store 审核,其不指定开发测试的 Devices。

二、操作指南

  • 本章节主要介绍证书的创建和对应的 Profile 的生成
  • Windows 系统不支持,创建证书只能在 macOS 完成,因此本章节教程仅适用于 Mac 系统

1. 创建CSR文件(证书请求文件)

  • 进入 macOS,点击「 钥匙串访问 -> 证书助理 -> 从证书颁发机构请求证书」,
  • 填写对应的信息,Keychain 将生成一个包含开发者身份信息的 CSR(Certificate Signing Request)文件,Keychain Access->Keys(密钥)中会增加一对 Public/Private Key Pair。

image

image

2.创建 appID

登录苹果后台open in new window, 创建 appID(bundleID),填写的 bundleID 需要和申请移动应用账号时填写的 bundleID 一致。

image

image

此外,还要开启以下权限:

  • Access WiFi Information
  • Associated Domains
  • Hotspot
  • Wireless Accessory Configuration

如果使用了多端身份管理模块,请再开启苹果登录权限:

  • Sign In with Apple

如果使用的其他原生插件要求开启对应权限,如苹果支付,也配置开启对应权限。

image

3. 创建开发者证书

选择Certificates, 点击创建证书,选择相应的证书。

image

image

image

  • 生成完证书,可以在 Certificates -> All 中查看该证书,并进行下载或删除。
  • 生成的证书(cer文件)只包含公钥,私钥在你的电脑本地。下载证书到本地后双击打开可以安装到钥匙串中。可以选择对应证书,右键导出 p12 文件(包含私钥),这个用来对 iOS App 进行签名。

image

  • 需要注意的是,证书的状态必须显示的是此证书有效,其他状态的证书都将导致签名失败或者导出的 IPA 不可用。 image

  • 证书状态显示信任而不是此证书有效可能是因为证书信任链不完整,开发者可尝试「右键证书」-> 「显示简介」查看证书信任链。找到 CA 签发者,下载证书后双击。 image

4. 创建配置文件(Provisioning Profiles)

  • 点击创建 Profiles,选择类型,然后选择之前创建的 AppID 和对应类型的证书,填写 Profile 名称
  • 完成配置后,即可下载生成的 Profile 文件到本地

image

image

image

image

image

5. 编译 IPA

  • 在上述步骤中生成的 p12 签名证书和 Profile 文件,可以在微信开发者工具上构建 IPA 时选择证书签名,详情卡查看打包生成 IPA
  • 选择对应的文件即可生成 IPA
  • 分发类型证书签名后的 IPA 即可上传到 App Store Connect 提审

6. 注意事项

  • 需要注意的是,证书与 Provisioning Profiles 的类型必须配对使用,即都是开发类型、或者都是分发类型
  • 并且能通过开发者工具、xcode 安装至手机运行的 IPA 需要是开发证书签名生成的