> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# iOS：生成 p12 证书

> 生成并上传 .p12 推送证书，通过 OneSignal 将您的 iOS 或 macOS 应用连接到 Apple 推送通知服务 (APNs)。

要向 iOS 应用发送推送通知，需要与 Apple 推送通知服务 (APNs) 的身份验证连接。您可以使用\*\*[基于令牌的 (.p8 密钥)](./ios-p8-token-based-connection-to-apns)**或**基于证书的 (.p12 文件)\*\*方法进行身份验证——但只需要一种。

<Warning>
  .p12 证书会在一年后过期。如果您不想管理此证书的续期，您可以[创建 .p8 密钥](./ios-p8-token-based-connection-to-apns)，该密钥不会过期。
</Warning>

本指南将指导您设置\*\*基于证书的 (.p12 文件)\*\*方法。这不推荐，因为您必须每年续期，这需要在您的 Apple Developer 账户中生成新证书并将其重新上传到 OneSignal 控制台。

***

## 要求

开始之前，请确保您具备以下条件：

* 一个 iOS 或 macOS 应用。
* 具有[**管理员**访问权限](https://appstoreconnect.apple.com/access/users)的[**付费 Apple Developer 账户**](https://developer.apple.com/)。
* 一个 [**OneSignal 账户**](https://onesignal.com)。
* 安装了 Xcode 14+ 的 Mac。
* 在 Xcode 中为您的应用目标设置的 **Bundle ID**。
* 启用了**推送通知功能**的 Xcode 项目。

***

## 创建证书签名请求（CSR）

您首先需要在 macOS 上创建 `.certSigningRequest` 文件。

1. 打开**应用程序 > 实用工具 > 钥匙串访问**。
2. 从菜单栏，点击**钥匙串访问 > 证书助理 > 从证书颁发机构请求证书...**

<Frame caption="Mac 钥匙串访问">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4792ecd2f2859197d192d41e953c7cb461b62a08955e36de8674d13ebe3245d9-image.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=0d53d2a7d0a7992bb646cda2c10b2e3f" alt="显示证书助理选项的钥匙串访问菜单" width="709" height="314" data-path="images/docs/4792ecd2f2859197d192d41e953c7cb461b62a08955e36de8674d13ebe3245d9-image.png" />
</Frame>

3. 填写必需的字段：
   * **用户电子邮件地址**: `[email protected]`
   * **通用名称**：您的姓名或证书名称
   * **CA 电子邮件地址**：留空
   * **请求是**：选择**存储到磁盘**

<Frame caption="证书助理窗口">
  <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/edfa46c8fa6d2a2743ec85d049cbed85d67eb4163388f44c7cbb602740ec1430-image.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=d78feadfda1f4a2c71806f8ab10edd04" alt="证书助理窗口，包含电子邮件、通用名称和存储到磁盘字段" width="728" height="554" data-path="images/docs/edfa46c8fa6d2a2743ec85d049cbed85d67eb4163388f44c7cbb602740ec1430-image.png" />
</Frame>

4. 点击**继续**，选择保存 `.certSigningRequest` 文件的位置，然后点击**保存**。

***

## 为应用 ID 启用推送功能

<Note>
  如果您在 Xcode 中使用**自动管理签名**，请跳过此部分。
</Note>

1. 转到 Apple Developer 门户的[标识符](https://developer.apple.com/account/ios/identifier/bundle)部分，从列表中找到并选择您的应用的 **App ID**。

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0f111cc6bc3d596c4f8ede9a8f62f8fafc526358cfc0f2f8b1e1a4f7fc8248fc-image.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=05b2003fb8c2fcd9131c44a793a0aba3" alt="Apple Developer 标识符部分，显示 App ID 列表" width="894" height="319" data-path="images/docs/0f111cc6bc3d596c4f8ede9a8f62f8fafc526358cfc0f2f8b1e1a4f7fc8248fc-image.png" />
</Frame>

2. 通过勾选复选框启用**推送通知**功能。

<Warning>
  **不要**点击\*\*"配置"\*\*——只需启用切换开关。
</Warning>

<Frame>
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/3a420360bc845131ad00179d9542b9cc0dae47448ee0eef5068e609b7340f5d3-image.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=ba0781029d19036ddad3db3e45037d2b" alt="启用了推送通知复选框的 App ID 功能列表" width="2008" height="142" data-path="images/docs/3a420360bc845131ad00179d9542b9cc0dae47448ee0eef5068e609b7340f5d3-image.png" />
</Frame>

***

## 创建推送证书

按照以下步骤生成 Apple 推送通知服务 (APNs) SSL 证书：

1. 访问 [Apple 证书页面](https://developer.apple.com/account/resources/certificates/add)。

2. 点击**加号 (+)** 按钮创建新证书。

3. 在**服务**下，选择：

   * **Apple 推送通知服务 SSL（沙盒和生产）**
   * 然后点击**继续**

   <Frame>
     <img src="https://mintcdn.com/onesignal/MUgio66t0sYhGEvj/images/docs/6a48d1c410b80812f2893209eec0ae3d761ec86e40229b03ac780f1ae7124e48-image.png?fit=max&auto=format&n=MUgio66t0sYhGEvj&q=85&s=6e0d0bb4d73dab95c32a0dc96d740723" alt="Apple 证书页面，显示 Apple 推送通知服务 SSL 沙盒和生产选项" width="896" height="865" data-path="images/docs/6a48d1c410b80812f2893209eec0ae3d761ec86e40229b03ac780f1ae7124e48-image.png" />
   </Frame>

4. 从列表中选择您的**应用 ID**，然后点击**继续**。

<Frame>
  <img src="https://mintcdn.com/onesignal/_KaXe4GQkxsEfa17/images/docs/35daef0614fe669cadeb12adb900f0da6deab8b4283e29e1ba2712ce3d23e634-image.png?fit=max&auto=format&n=_KaXe4GQkxsEfa17&q=85&s=af9f0fb1fefed645b5ebefc6964d0d2d" alt="推送证书的应用 ID 选择下拉菜单" width="897" height="366" data-path="images/docs/35daef0614fe669cadeb12adb900f0da6deab8b4283e29e1ba2712ce3d23e634-image.png" />
</Frame>

5. 上传您之前生成的 `.certSigningRequest` 文件。

<Frame>
  <img src="https://mintcdn.com/onesignal/MUgio66t0sYhGEvj/images/docs/6bb85bd5c6f420f73f1325ca5ccceea1c9cb22c618ccae8e7b34b5ead7fe28aa-image.png?fit=max&auto=format&n=MUgio66t0sYhGEvj&q=85&s=1ca586cee9190e53ea681b411e36a786" alt="上传证书签名请求文件对话框" width="662" height="626" data-path="images/docs/6bb85bd5c6f420f73f1325ca5ccceea1c9cb22c618ccae8e7b34b5ead7fe28aa-image.png" />
</Frame>

6. 点击**继续**，然后点击**下载**将生成的 `.cer` 文件保存到您的电脑。

<Frame>
  <img src="https://mintcdn.com/onesignal/9_Q1FZLh6C0BFLq-/images/docs/ca14b193b3ac73e0e4dfbc1697a3e24454341ebd880d2391d369fe20868f9434-image.png?fit=max&auto=format&n=9_Q1FZLh6C0BFLq-&q=85&s=e81079a2a25e6e82ed0eb9f1204ab774" alt="生成的 .cer 证书文件的下载按钮" width="924" height="368" data-path="images/docs/ca14b193b3ac73e0e4dfbc1697a3e24454341ebd880d2391d369fe20868f9434-image.png" />
</Frame>

您将使用此 `.cer` 文件在下一部分创建您的 `.p12` 证书。

***

## 创建私钥并导出 .p12 证书

1. **双击**下载的 `.cer` 文件将其导入**钥匙串访问**。

2. 在钥匙串访问中，导航到：

   * **钥匙串 > 登录**
   * **类别 > 我的证书**

3. 找到名为**Apple Push Services**的证书。

4. **右键点击**证书并选择**导出**。

<Frame caption="导出将在您所需的文件位置生成 .p12 文件">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a8aae38ea4755020f4695ddd6fd2ccfc0e0bd8d262414665467f973d3ed90912-image.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=ce1453c325f0ad6790754f25a7a1a506" alt="钥匙串访问右键菜单，显示 Apple Push Services 证书的导出选项" width="960" height="720" data-path="images/docs/a8aae38ea4755020f4695ddd6fd2ccfc0e0bd8d262414665467f973d3ed90912-image.png" />
</Frame>

5. 选择保存文件的位置，并选择文件格式为 **`.p12`**。

6. 出现提示时，为 `.p12` 文件设置**密码**。上传到 OneSignal 时需要此密码。

<Frame>
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/070cbc6d0197377e3805cf23e92bf9d876efdb1754e9c233db8bde453cc7dcd4-Screenshot_2025-04-16_at_2.10.17_PM.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=58e96cbb675ff90014c37e7fd1852975" alt="显示 .p12 文件格式选择和密码提示的保存对话框" width="918" height="558" data-path="images/docs/070cbc6d0197377e3805cf23e92bf9d876efdb1754e9c233db8bde453cc7dcd4-Screenshot_2025-04-16_at_2.10.17_PM.png" />
</Frame>

***

## 将 .p12 上传到 OneSignal

1. 在您的 [OneSignal 控制台](https://onesignal.com)中，转到您的应用 > **设置 > 推送和应用内 > Apple iOS**。
2. 上传 `.p12` 文件（如果您设置了密码，请输入密码）。点击**保存**。

<Check>
  您已成功在 OneSignal 中设置了**使用 .p12 证书的 APNs 身份验证**。

  您的 iOS 应用现在已准备好发送和接收推送通知！🎉
</Check>

***

## .p12 故障排除

### 证书格式无效错误

**原因：** 上传的文件不是 `.p12` 格式。

**解决方法：** 确保从钥匙串访问导出证书**为 `.p12`**（不是 `.cer` 或 `.pem`）。

### 上传到 OneSignal 时出现"密码不正确"

**原因：** 密码输入错误或未设置。

**解决方法：**

* 尝试重新导出并设置**新密码**。
* 确保粘贴时没有添加额外的空格。
* 如果使用 Provisionator，密码显示在 UI 中。

### 导出文件中缺少私钥

**原因：** 证书已导入但未与私钥配对。

**解决方法：**

* 确保在同一台机器上从钥匙串访问**生成 CSR**。
* 下载 `.cer` 文件后，双击安装并检查密钥是否出现在**我的证书**下。

### 上传后推送通知无法工作

**原因：** 应用 ID 不正确，或配置文件缺少功能。

**解决方法：**

* 确认 `.p12` 与应用中使用的**应用 ID** 匹配。
* 在 Apple Developer 门户中，确保应用 ID 已**启用推送通知**。
* 确保配置文件包含**推送**。

### 证书过期

**原因：** `.p12` 证书不再有效。

**解决方法：**

* 转到 Apple Developer > 证书并检查到期时间。
* 撤销旧证书并创建新证书。

***

## 后续步骤

<Columns cols={2}>
  <Card title="iOS SDK 设置" icon="apple" href="./ios-sdk-setup">
    安装 OneSignal SDK，在您的应用中进行初始化，并发送测试通知。
  </Card>

  <Card title="移动端 SDK 设置" icon="mobile" href="./mobile-sdk-setup">
    选择您的平台，按照适用于 Android、iOS 或跨平台框架的完整 SDK 集成指南进行操作。
  </Card>
</Columns>

***

## 常见问题

### 我的 .p12 证书何时过期？如何续期？

.p12 证书在创建后**一年**到期。要续期，请生成新的 CSR，在 Apple Developer 中创建新的推送证书，将其导出为 .p12，然后重新上传到您的 OneSignal 控制台。设置日历提醒以避免服务中断。或者，切换到 [.p8 密钥](./ios-p8-token-based-connection-to-apns)，该密钥不会过期。

### 我应该使用 .p8 还是 .p12？

OneSignal 建议大多数应用使用 **.p8 密钥**。.p8 密钥不会过期，适用于您 Apple Developer 账户下的所有应用，且管理更简单。.p12 证书是特定于应用的，必须每年续期。请参阅 [.p8 密钥指南](./ios-p8-token-based-connection-to-apns)了解设置说明。

### 我需要配置文件吗？如何创建？

是的，Apple 要求为开发、测试 (Ad Hoc) 和分发到 App Store 使用不同类型的配置文件。

在 Xcode 中，您应该能够选择**自动管理签名**来自动创建一个。

<Frame>
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/73993224529058ffe5797afc5998c49bd54a64d5dd97cce26479b5f69c0bf46d-Screenshot_2025-04-21_at_4.48.21_PM.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=794544ccd6d05744f053386b2a961c74" alt="启用了自动管理签名的 Xcode 签名与功能选项卡" width="2058" height="632" data-path="images/docs/73993224529058ffe5797afc5998c49bd54a64d5dd97cce26479b5f69c0bf46d-Screenshot_2025-04-21_at_4.48.21_PM.png" />
</Frame>

否则，请参阅 [Apple 关于配置文件的文档](https://developer.apple.com/help/account/provisioning-profiles/provisioning-profile-updates)了解详细信息。

***
