为 APNS 创建. pem 文件?

我如何创建一个. pem 文件存储在主机服务器的 APN 有效负载数据?

165064 次浏览

以下是我所做的,来自: Blog.boxedice.com和“ iPhone 高级项目”第10章作者: Joe Pezzillo。

使用密钥链中的 aps _ development _ Identity. cer:

  1. 从本地 Mac 和登录 Keychain 启动 Keychain Access,按“证书”类别进行筛选。你会看到一个可扩展的选项,叫做“苹果开发推送服务”
  2. 右击“苹果开发推送服务”> 导出“苹果开发推送服务 ID123”。将其保存为 apns-dev-cert.p12文件,以便您可以访问它。不需要输入密码。
  3. 下一个命令以 Mac 终端的 PEM 格式(隐私增强邮件安全证书)生成证书:

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
    

On the server set the file permission of this unencrypted key by using chmod 400.

- > > 苹果自己的教程 < <-是我遇到的唯一一套有效的指令。它是直截了当的,我可以确认它在 linux php 服务器和 windows php 服务器上都能出色地工作。

你可以在页面底部找到他们创建 pem 的5个步骤。

启动 终端应用程序并在提示符后输入以下命令

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes

这是我在 Windows 7上安装 OpenSSL之后的做法(链接到 Win32安装程序,选择最新的版本,而不是最轻的版本)。

使用这种方法,您只需要从苹果下载 .cer文件。

c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM

这将创建一个文件,然后您需要添加您的私人密钥太。

——开始私人密钥——
等等
等等
等等
等等
——结束私人钥匙——
——开始证书——
AwIBAgwIBADAwIBADA... 等等
AwIBAgwIBADAwIBADA... 等等
AwIBAgwIBADAwIBADA... 等等
——结束证书——

就是这样。

步骤:

  1. 使用密钥链访问创建 CSR
  2. 使用私钥创建使用密钥链访问的 P12
  3. 应用程序 ID 和证书

这给了你三个文件:

  • CSR
  • 作为 p12文件的私钥(PushChatKey.p12)
  • SSL 证书 aps_development.cer

进入下载文件的文件夹,在我的案例中是桌面:

$ cd ~/Desktop/

将. cer 文件转换为. pem 文件:

$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

将私钥的.p12文件转换为.pem 文件:

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

输入密码:

MAC 确认正常 输入 PEM 密码短语: 验证-输入 PEM 密码:

方法的密码短语。P12文件,以便 openssl 可以读取它。然后,您需要输入一个新的密码,该密码将用于加密 PEM 文件。在本教程中,我再次使用“ pushchat”作为 PEM 密码。你应该选择更安全的地方。 注意: 如果不输入 PEM 密码,openssl 将不会提供错误消息,而是生成的。Pem 文件中不包含私钥。

最后,将证书和密钥合并到一个. pem 文件中:

$ cat PushChatCert.pem PushChatKey.pem > ck.pem

发展阶段:

步骤1: 从证书创建证书. pem. p12
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

步骤2: Create Key. pem from Key. p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12

步骤3(可选) : 如果您想删除第二步中询问的密码短语
openssl rsa -in apns-dev-key.pem -out apns-dev-key-noenc.pem

第四步: 现在我们必须合并钥匙。和证书。得到发展。应用程序开发阶段推送通知所需的 pem。

如果执行了第3步,则运行:
cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem

如果执行第3步 没有,则运行:
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

步骤5: 检查证书有效性和与 APNS 的连接

如果执行了第3步,则运行:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem

如果执行第3步 没有,则运行:
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem

制作阶段:

步骤1: 从证书创建证书. pem. p12
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

步骤2: Create Key. pem from Key. p12
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12

步骤3(可选) : 如果您想删除第二步中询问的密码短语
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem

第四步: 现在我们必须合并钥匙。和证书。Pem 拿下制片公司。应用程序生产阶段推送通知所需的 pem。

如果执行了第3步,则运行:
cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem

如果执行第3步 没有,则运行:
cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem

步骤5: 检查证书有效性和与 APNS 的连接。

如果执行了第3步,则运行:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem

如果执行第3步 没有,则运行:
openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem

你可以看看这里。我用图像描述了详细的过程,从创建证书到应用程序密钥到配置文件,最终到 pem。 Http://docs.moengage.com/docs/apns-certificate-pem-file

我从来不记得创建 .pem文件所需的 openssl命令,所以我编写了这个 bash 脚本来简化过程:

#!/bin/bash
if [ $# -eq 2 ]
then
echo "Signing $1..."


if ! openssl pkcs12 -in $1 -out $2 -nodes -clcerts; then
echo "Error signing certificate."
else
echo "Certificate created successfully: $2"
fi
else
if [ $# -gt 2 ]
then
echo "Too many arguments"
echo "Syntax: $0 <input.p12> <output.pem>"
else
echo "Missing arguments"
echo "Syntax: $0 <input.p12> <output.pem>"
fi
fi

命名它,例如,signpem.sh并将它保存在用户的文件夹中(/Users/<username>?).创建文件后,执行 chmod +x signpem.sh使其可执行,然后可以运行:

~/signpem myCertificate.p12 myCertificate.pem

然后创建 myCertificate.pem

我会建议一个更简单的解决方案。只要使用 证明
Certifire 是一个 macOS 应用程序,只需在几秒钟内单击一下就可以生成 Apple Push Notification 证书。

以下是步骤:
1. 下载应用程序。
2. 使用苹果开发者账户凭证登录。
3. 选择应用程式编号
点击“生成”按钮
5你完蛋了!

您将获得.pem 格式和.p12格式的 APN 证书。 更重要的是,您还将得到.pem 和.p12的组合(key + cert) !
更重要的是,您还将获得所有这些证书的无密码版本!

enter image description here

enter image description here

有一个最简单的方法。如果您的密钥链访问中已经有 apns p12文件,则使用 Pem 文件。

打开终端并输入以下命令:

发展 Openssl pkcs12-in apns-div-cert. p12-out apns-div-cert. pem-node-clcerts

制作 Openssl pkcs12-in apns-dist-cert. p12-out apns-dist-cert. pem-node-clcerts

将您的 P12文件重命名为: apns-div-cert. P12,否则您需要输入您的文件名。谢谢!

注意: 您必须在 App Store Connect 中具有 Team Agent 或 Admin 角色才能执行任何这些任务。如果您不是应用程序商店连接中团队的一部分,这可能不会影响您。

向 iOS 应用程序发送推送通知需要创建加密密钥。在过去,这是一个使用 SSL 密钥和证书的繁琐过程。每个 SSL 证书都特定于一个 iOS 应用程序。2016年,苹果公司推出了一种新的身份验证密钥机制,这种机制更可靠、更易于使用。与 iOS 应用程序相比,新的身份验证密钥更加灵活、易于维护和应用。

尽管身份验证密钥的引入已有多年,但并非所有服务都支持它们。FireBase 和 AmazonPinpoint 支持身份验证密钥。Amazon SNS,Urban Airship,Twilio 和 LeanPlum 则没有。许多开源软件包尚不支持身份验证密钥。

创建所需的 SSL 证书并将其导出为包含公钥和私钥的 PEM 文件:

  1. 导航到证书,标识符和配置文件
  2. 创建或编辑应用程序 ID。
  3. 启用应用程序 ID 的推送通知
  4. 向应用程序 ID 添加 SSL 证书
  5. 将证书转换为 PEM 格式

如果您已经在 Apple Developer Center 网站上为应用程序设置了 SSL 证书,那么您可以直接跳到转换证书为 PEM 格式。请记住,如果您没有 < em > also 在 Mac 上生成的私钥,而这个私钥创建了上传到 Apple 的签名请求,那么您将会遇到问题。

请继续阅读,以了解如何避免失去对该私钥的跟踪。

导航到证书,标识符和配置文件

Xcode 不控制推送通知的证书或密钥。要为应用程序创建按键并启用推送通知,您必须访问 Apple Developer Center 网站。帐户的证书、标识符和配置文件部分控制 App ID 和证书。

要访问证书和配置文件,您必须是付费的 Apple Developer Program 成员,或者是团队成员。

  1. 登录苹果开发者网站 enter image description here
  2. 转到 帐户,然后 < strong > 证书、标识符和配置文件 enter image description here

创建应用程序 ID

使用推送通知的应用程序不能使用通配符 AppID 或配置文件。每个应用程序都要求您在 AppleDeveloperCenter 门户中设置一个 AppID 记录,以启用推送通知。

  1. 转到 标识符下的 应用程序 ID
  2. 使用捆绑包标识符搜索您的应用程序。它可能已经存在。
  3. 如果没有现有的应用程序 ID 的应用程序点击(+)按钮来创建它。
  4. 应用程序 ID后缀部分选择 显式应用程序 IDenter image description here
  5. 输入应用程序的捆绑包标识符。
  6. 滚动到底部并启用 推送通知enter image description here
  7. 继续
  8. 在下一个屏幕上单击 登记册以完成应用程序 ID 的创建。 enter image description here

启用应用程序 ID 的推送通知

  1. 转到 标识符下的 应用程序 ID
  2. 单击 AppID 查看详细信息并滚动到底部。 enter image description here
  3. 点击 < strong > 编辑 enter image description here
  4. 在应用程序 ID 设置屏幕向下滚动到 < strong > 推送通知 enter image description here
  5. 选中复选框以启用推送通知。 enter image description here

为推送通知创建 SSL 证书是一个包含多项任务的过程。每个任务有几个步骤。所有这些都是以 P12或 PEM 格式导出密钥所必需的。在继续之前回顾一下步骤。

向应用程序 ID 添加 SSL 证书

  1. 在“开发 SSL 证书”下单击“ 创建证书”。在以后的生产中也需要这样做。
  2. 苹果将要求您创建一个证书签名请求 enter image description here

要创建证书,您需要在 Mac 上创建一个证书签名请求(CSR) ,并将其上传到 Apple。

稍后,如果需要将该证书导出为 pkcs12(又名 p12)文件,则需要使用来自 同一个 Mac的密钥链。创建签名请求时,Keychain Access 将在默认密钥链中生成一组密钥。这些密钥对于使用 Apple 将根据签名请求创建的证书是必需的。

有一个专门用于开发凭证的单独密钥链是一个很好的实践。如果这样做,请确保在使用证书助理之前将此密钥链设置为默认值。

为开发凭证创建键链

  1. 在 Mac 上打开钥匙链访问
  2. 档案菜单中选择 新钥匙链。
  3. 给您的密钥链一个描述性的名称,如“共享开发”或您的应用程序的名称

创建证书签名请求(CSR)

在创建证书签名请求时,证书助理将在默认密钥链中生成两个加密密钥。将开发密钥链设置为默认密钥链非常重要,这样密钥就位于正确的密钥链中。

  1. 在 Mac 上打开钥匙链访问。
  2. 控件-单击 keychain 列表中的开发 keychain
  3. 选择 < strong > Make keychain“ Shared Development”Default enter image description here
  4. 钥匙链访问菜单中选择 证书助理,然后从子菜单中选择 向证书颁发机构申请证书..。enter image description here
  5. 当证书助理出现时,检查 保存到磁盘enter image description here
  6. 用户电子邮件地址字段中输入与您的 Apple Developer Program 成员关联的电子邮件地址。
  7. 通用名称字段中输入密钥的名称。使用应用程序的 bundle ID 作为公共名称的一部分是一个好主意。这样就很容易分辨出哪些证书和密钥属于哪个应用程序。
  8. 单击“继续”。证书助理将提示将签名请求保存到文件中。
  9. 在密钥链访问使“登录”密钥链再次默认。

创建签名请求生成一对密钥。在上载签名请求之前,验证开发密钥链是否具有密钥。它们的名称将与签名请求中使用的 通用名称相同。

enter image description here

上载证书签名请求(CSR)

一旦证书签名请求被创建,将其上传到 Apple Developer Center。苹果将根据签名请求创建推送通知证书。

  1. 上载证书签名请求
  2. 从证书签名请求下载 Apple 创建的证书 enter image description here
  3. 在 Keychain Access 中,从 Keychain 列表中选择开发 Keychain
  4. 档案菜单中选择 < strong > Import Items..。 enter image description here
  5. 导入从 Apple 下载的证书文件

您的开发密钥链现在应该在 Keychain Access 中的 我的证书下显示带有私钥的推送证书:

enter image description here

此时,应该备份开发密钥链。许多团队将他们的推送证书保存在安全的 USB 驱动器上,承诺进行内部版本控制或使用像时间机器这样的备份解决方案。开发密钥链可以在不同的团队成员之间共享,因为它不包含任何个人代码签名凭据。

钥匙链文件位于 ~/Library/Keychains中。

一些第三方推送服务需要保密增强邮件格式的证书,而另一些则需要公开密钥加密标准 # 12(PKCS12或 P12)。从苹果下载的证书可以用来导出这些格式的证书——但前提是你必须保留私钥。

将证书转换为 PEM 格式

  1. 在 Keychain Access 中选择前面创建的开发 Keychain。
  2. 我的证书中选择推送证书。它应该有一个私钥。 ! [下载 CER 推送证书](keychain/import complete. png)
  3. 档案菜单中选择 < strong > Export Items..。 enter image description here
  4. 在打开的保存面板中,选择 私隐增强邮件(. pem)作为文件格式。
  5. 保存文件