# 创建iOS证书

# 使用Mac电脑

# 申请证书请求文件

# 钥匙串程序申请请求文件

申请发布证书前,您需要先本地创建一个证书请求文件,这时需要使用MacOS操作系统,打开“应用程序”–>“实用工具”–>“钥匙串访问”–>“证书助理”中选择“从证书颁发机构请求证书...”。

# 保存请求文件设置

打开“证书信息”界面如下图所示: 用户电子邮件地址:填写您申请苹果开发者帐号的电子邮件地址; 常用名称(默认即可); CA电子邮件地址空着; 选择存储到磁盘,点击“继续”。

# 保存请求文件名称和位置

选择保存的位置,比如选择桌面,点击“存储”就可以看到在桌面上多了一个CertificateSigningRequest.certSigningRequest的证书请求文件。此文件申请iOS发布证书时需要用到,请注意保存。

# 申请iOS发布证书

恒生内部开发者请联系公司信息安全中心统一申请iOS证书,外部开发者可参考以下文档在苹果开发者网站申请iOS证书

# 进入证书申请页面

打开苹果开发者账户 (opens new window)首页,登录开发者账号:

开发者账户网站提供了开发、测试、发布流程中可能会使用到的一些站点的导航,Certificates, Indentifiers & Profiles是证书、ID和描述文件管理的站点:

Certificates, Indentifiers & Profiles首页默认展示Certificates菜单,右侧列表中展示了当前账号下所有的证书:

# 选择申请证书类型

点击左上角的蓝色加号按钮创建新证书。

当应用需要发布至App Store时,在这里需选择iOS Distribution (App Store and Ad Hoc),点击Continue进入下一步。当申请证书用于开发调试时,在这里需选择iOS App Development,点击Continue进入下一步.

# 添加证书请求文件

点击下面的“Choose File”,选择桌面上本地创建的“CertificateSigningRequest.certSigningRequest”证书请求文件,点击Continue,生成发布证书。

# 下载证书

证书列表中点击证书名称可进入证书详情页,点击Download按钮可下载证书文件

# iOS证书P12导出

# 证书导入到钥匙串程序中

双击从苹果开发者网站下载的证书文件即可将证书安装至系统钥匙串中。打开钥匙串访问APP,进入左侧“系统”菜单,并切换至“我的证书”子菜单。在证书列表中找到刚刚安装的证书并右击证书,在弹出菜单上选择导出选项。

# 证书保存为P12的个人信息交换文件

给导出的证书起个名字,选择存储的位置。(注意:格式为P12的个人信息交换文件。)

# P12文件添加密码

给导出的P12文件设置密码,此密码在平台上打ipa包时需要用到。

# 创建iOS应用AppID

# 进入申请界面

切换至左侧Identifiers菜单,可看到当前账号下所有的App ID:

# 注册AppID

点击左上角的蓝色加号按钮注册新的标识符,选择App IDs并点击Continue按钮注册新的应用ID

# 选择AppID类型

开发者需要根据应用类型选择对应的AppID类型,对于常规应用来说选择App

# 填写并确认AppID信息

填写Bundle ID和描述信息,点击Register完成AppID的注册:

# 查看生成AppID

AppID生成后可以在AppID列表中点击进去AppID详情页,AppID详情页可以查看基本信息、编辑、删除AppID:

# 申请iOS APP应用的Provisioning Profiles文件

# 进入申请界面

切换至左侧Profiles菜单,可看到当前账号下所有的描述文件:

# 选择申请类型

点击左上角的蓝色加号按钮注册新的描述文件,选择App IDs并点击Continue按钮注册新的应用ID

Development作为开发使用,Distribution作为发布使用。

当应用需要发布至App Store时,选择App Store,然后点击Continue按钮进入下一步。当申请证书用于开发调试时,在这里需选中iOS App Development,点击Continue进入下一步。(注意:需要与之前生成的P12证书类型保持一致。)

# 选择对应的App ID

点击下拉菜单,选择要申请的App ID,点击Continue按钮进入下一步。

# 选择对应的证书

描述文件中需要添加证书文件,因此需要在下面证书列表中勾选希望添加的证书文件:

# 添加设备

Ad Hoc类型的描述文件中除了需要添加证书文件还需要添加设备列表,仅被添加到描述文件中的设备才能安装该描述文件对应的安装包:

# 填写描述文件名称

填写描述文件名称,并检查其他信息是否正确,信息正确无误后点击Generate按钮即可生成描述文件

# 查看描述文件

描述文件生成后可以在描述文件列表中点击进去详情页,描述文件详情页可以查看基本信息、编辑、删除描述文件:

# 使用Windows电脑

OpenSSL是一个功能丰富且自包含的跨平台开源安全工具箱,支持Linux、Windows、macOS等主流操作系统。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS #10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS #7标准实现和PKCS #12个人数字证书格式实现等功能。

通常申请苹果开发者证书时需要使用macOS系统自带的“钥匙串”应用生成.certSigningRequest格式的证书申请文件,在证书导出时也需要用到“钥匙串”应用生成.p12格式的证书文件。.certSigningRequest文件就是标准的符合X.509格式的证书申请文件,而.p12文件就是常见的标准的PCKS #12证书归档文件。因此在Windows环境中可以使用OpenSSL命令行工具生成相关证书申请文件和证书文件。

# 安装OpenSSL

Windows环境中建议直接下载官方推荐的由第三方已经编译好的二进制文件安装包,地址:https://wiki.openssl.org/index.php/Binaries (opens new window)。安装后手动配置PATH环境变量才可在命令行正常调用。

当然也可以参考官方的编译安装文档,下载源码进行编译、安装,文档地址:https://wiki.openssl.org/index.php/Compilation_and_Installation (opens new window)

# 使用OpenSSL生成私钥和证书申请文件

  1. 生成证书申请文件的前提是生成私钥,因此需要先用以下命令生成私钥文件:
openssl genrsa -out adp.key 2048

adp.key是生成的私钥的文件名,可以替换成实际需要的名字,建议使用.key作为后缀名。如果已有私钥文件,可以跳过这一步,私钥文件可以重复使用不需要每次都重新生成。

  1. 使用上一步中生成的私钥文件生成证书申请文件:
openssl req -new -key adp.key -out adp.csr

adp.key是第1步中生成的私钥文件的文件名,请根据实际情况传入。

adp.csr是生成的证书申请文件,可以替换成实际需要的名字,建议使用.csr作为后缀名。

在输入命令后,如下图所示,请根据命令提示和实际情况输入这些信息

输入完毕后证书申请文件就生成好了。生成的证书申请文件可以重复使用不需要每次都重新生成。

  1. 生成的证书申请文件可以直接在苹果开发者网站上用于申请开发、发布、推送等各类证书,在需要的地方根据提示直接上传即可。需要注意的是私钥文件和证书申请文件都可重复使用,且私钥文件在后续生成.p12证书时仍需用到,因此请妥善保管这两个文件。

# 使用OpenSSL生成.p12格式的证书

  1. 在苹果开发者网站上下载证书文件,并将证书文件与申请时所用证书申请文件对应的私钥文件放到同一目录。
  2. 由于OpenSSL的PKCS封装子命令不能直接支持苹果网站上下载的.cer证书格式,因此需要使用以下命令对证书格式进行转换:
openssl x509 -inform der -in development.cer -out development.pem

development.cer是从苹果开发者网站上下载的证书文件名,请替换成实际的名字。

development.pem是转换成.pem格式后的证书文件名,可以替换成实际需要的名字,建议采用.pem作为后缀名。

  1. 基于私钥文件和证书文件输出.p12文件:
openssl pkcs12 -export -clcerts -in development.pem -inkey adp.key -out adp.p12

development.pem是从苹果网站下载并转换成pem格式后的证书文件名,请替换成实际的名字。

adp.key是申请证书时上传到苹果网站的证书申请文件对应的私钥文件名,替换成实际的名字。

adp.p12是最终生成的.p12证书文件名,可以替换成实际需要的名字,建议采用.p12作为后缀名。

输入命令后根据提示输入密码并确认密码后相应的证书文件就生成好了。

经过验证生成的证书文件可以正常导入苹果“钥匙串”应用,也可正常用于开发、发布、APNs对接等场景。