为APNS创建.pem文件?

Bir*_*chi 171 iphone ssl-certificate payload apple-push-notifications

如何创建要存储在托管服务器中的.pem文件以获取APN有效负载数据?

zap*_*aph 351

这就是我所做的,来自:blog.boxedice.com和"iPhone高级项目"第10章,作者Joe Pezzillo.

使用钥匙串中的aps_developer_identity.cer:

  1. 从本地Mac和登录密钥链启动Keychain Access,按"证书"类别进行过滤.您将看到一个名为"Apple Development Push Services"的可扩展选项
  2. 右键单击"Apple Development Push Services">导出"Apple Development Push Services ID123".将其保存为apns-dev-cert.p12您可以访问的文件.无需输入密码.
  3. 下一个命令在Mac的终端中为PEM格式生成证书(隐私增强邮件安全证书):

    openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
    
    Run Code Online (Sandbox Code Playgroud)

在服务器上使用chmod 400设置此未加密密钥的文件权限.

  • 在Mavericks(10.9的)Keychain Access上,有一个选项可以导出为.pem!只需右键单击Keychain Access中的"Apple开发/生产iOS推送服务证书"并选择导出它.将文件格式更改为.pem - 完成!也可用作导出选项:.p7b&.p12 (12认同)
  • .pem 对我来说是禁用的,优胜美地 beta7。我在创建 .pem 时遇到了一些问题,当我打开它时,它说是用于分发而不是 dev (4认同)
  • 我已按照上述步骤进行操作.我已将证书和php脚本保存在我的本地Web服务器(Xampp)上.我能够获取设备令牌,我在php脚本中使用它.php脚本能够连接并发送有效负载数据.但是,我仍然无法获得PUSH通知.问题是什么 ?通知是否需要时间才能达到??? (3认同)
  • .pem对我没有禁用,但我无法保存为p12.它的外观如下:http://i.imgur.com/U2M40dU.png (2认同)
  • 对于使用Keychain Access应用程序的macOS 10.14 Mojave,您可以选择将"Apple Push Services:com.yourBundleIdentifier证书"导出到文件格式"Privacy Enhanced Mail(.pem)"并随时保存. (2认同)

小智 216

发展阶段:

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

第2步:从Key .p12 命令创建密钥.pem
: 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

第4步:现在我们必须合并Key .pem和Certificate .pem以获得App 命令开发阶段推送通知所需的开发.pem
: cat apns-dev-cert.pem apns-dev-key-noenc.pem > apns-dev.pem (If 3rd step is performed )

命令: cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem (if not)

步骤5:检查证书有效性和与APNS
命令的 连接:openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem (If 3rd step is not performed )
命令: openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key-noenc.pem (If performed )

生产阶段:

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

第2步:从Key .p12 命令创建密钥.pem
: 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

步骤4:现在我们必须合并Key .pem和Certificate .pem以获得App
命令 生产阶段推送通知所需的生产.pem :cat apns-pro-cert.pem apns-pro-key-noenc.pem > apns-pro.pem (If 3rd step is performed ) 命令: cat apns-pro-cert.pem apns-pro-key.pem > apns-pro.pem (if not)

步骤5:检查证书有效性和与APNS
命令的 连接:openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key.pem (If 3rd step is not performed )
命令:( openssl s_client -connect gateway.push.apple.com:2195 -cert apns-pro-cert.pem -key apns-pro-key-noenc.pem 如果执行)

  • 把它保存在我宝贵的金库里!:P有史以来最伟大的答案! (5认同)
  • 谢谢,这是唯一一个适合我的人. (4认同)
  • 你是上帝,这项工作谢谢你.向上投票.这应该是答案,因为它深入探讨了如何逐步创建它 (3认同)
  • 当然这应该是公认的答案,因为@Rahul Sharma的答案没有产生预期的结果,而这个答案是完美的. (2认同)
  • 对我来说,在第 2 步中需要实际输入密码。将其保留为空会创建一个 PEM 文件,但该密钥的实际值为空,从而导致后续步骤中出现错误。 (2认同)
  • 什么是“apns-pro-key.p12”? (2认同)
  • 您首先从哪里获得“apns-pro-key.p12”? (2认同)

小智 58

脚步:

  1. 使用密钥链访问创建CSR
  2. 使用私钥创建P12使用密钥链访问
  3. APNS应用程序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 verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

首先需要输入.p12文件的密码,以便openssl可以读取它.然后,您需要输入将用于加密PEM文件的新密码.在本教程中,我使用"pushchat"作为PEM密码.你应该选择更安全的东西.注意:如果您未输入PEM密码,openssl将不会给出错误消息,但生成的.pem文件中不会包含私钥.

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

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


Dur*_*n.H 21

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

  openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
Run Code Online (Sandbox Code Playgroud)


cap*_*kaw 10

- >> Apple自己的教程 << - 是我遇到过的唯一可用的指令集.这是直截了当的,我可以确认它在linux php服务器和windows php服务器上运行得非常出色.

您可以在页面底部找到他们的5步创建过程.

  • 截至2015年9月,链接已被破坏 (4认同)
  • https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AddingCapabilities/AddingCapabilities.html#//apple_ref/doc/uid/TP40012582-CH26-SW11 (2认同)

que*_*ish 7

注意:您必须在 App Store Connect 中拥有 Team Agent 或 Admin 角色才能执行任何这些任务。如果您不是 App Store Connect 团队的一员,这可能不会影响您。

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

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

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

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

如果您已经在 Apple Developer Center 网站上为应用程序设置了 SSL 证书,则可以直接跳到将证书转换为 PEM 格式。请记住,你会遇到的问题,如果你不有被创建上传到了苹果的签名请求在Mac上生成私钥。

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

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

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

要访问证书和配置文件,您必须拥有付费的 Apple Developer Program 会员资格或成为拥有该会员资格的团队的一员。

  1. 登录苹果开发者网站 在此处输入图片说明
  2. 转到Account,然后Certificates, Identifiers & Profiles 在此处输入图片说明

创建应用 ID

使用推送通知的应用程序不能使用通配符应用程序 ID 或配置文件。每个应用程序都需要您在 Apple Developer Center 门户中设置一个 App ID 记录以启用推送通知。

  1. 转到应用ID下的标识符
  2. 使用捆绑标识符搜索您的应用。它可能已经存在。
  3. 如果应用程序没有现有的应用程序 ID,请单击 (+) 按钮以创建它。
  4. App ID Suffix 部分中选择Explicit App ID在此处输入图片说明
  5. 输入应用程序的包标识符。
  6. 滚动到底部并启用推送通知在此处输入图片说明
  7. 点击继续
  8. 在下一个屏幕上单击注册以完成创建 App ID。 在此处输入图片说明

为 App ID 启用推送通知

  1. 转到应用ID下的标识符
  2. 单击 App ID 以查看详细信息并滚动到底部。 在此处输入图片说明
  3. 单击编辑 在此处输入图片说明
  4. 在 App ID 设置屏幕中向下滚动到推送通知 在此处输入图片说明
  5. 选中该复选框以启用推送通知。 在此处输入图片说明

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

为 App ID 添加 SSL 证书

  1. 在开发 SSL 证书下单击创建证书。您稍后也需要在生产中执行此操作。
  2. Apple 会要求您创建证书签名请求 在此处输入图片说明

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

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

专门为用于开发的凭据使用单独的钥匙串是一种很好的做法。如果这样做,请确保在使用证书助手之前将此钥匙串设置为默认值。

为开发凭证创建钥匙串

  1. 在 Mac 上打开钥匙串访问
  2. 文件菜单中选择新建钥匙串...
  3. 为您的钥匙串指定一个描述性名称,例如“共享开发”或您的应用程序名称

创建证书签名请求 (CSR)

创建证书签名请求时,证书助手会在默认钥匙串中生成两个加密密钥。将开发钥匙串设为默认设置很重要,这样钥匙就在正确的钥匙串中。

  1. 在 Mac 上打开钥匙串访问。
  2. 按住 Control 键单击钥匙串列表中的开发钥匙串
  3. 选择使钥匙串“共享开发”默认 在此处输入图片说明
  4. Keychain Access菜单中选择Certificate Assistant,然后从子菜单中 请求来自证书颁发机构的证书...。在此处输入图片说明
  5. 当证书助手出现时,选中Saved To Disk在此处输入图片说明
  6. 用户电子邮件地址字段中输入与您的 Apple Developer Program 成员资格关联的电子邮件地址
  7. 通用名称字段中输入密钥的名称。使用应用程序的捆绑 ID 作为通用名称的一部分是个好主意。这样可以轻松分辨哪些证书和密钥属于哪个应用程序。
  8. 点击继续。证书助手将提示将签名请求保存到文件中。
  9. 在钥匙串访问中,再次将“登录”钥匙串设为默认值。

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

在此处输入图片说明

上传证书签名请求 (CSR)

创建证书签名请求后,将其上传到 Apple 开发人员中心。Apple 将根据签名请求创建推送通知证书。

  1. 上传证书签名请求
  2. 下载 Apple 从证书签名请求中创建的证书 在此处输入图片说明
  3. 在钥匙串访问中,从钥匙串列表中选择开发钥匙串
  4. 文件菜单中选择导入项目... 在此处输入图片说明
  5. 导入从苹果下载的证书文件

您的开发钥匙串现在应该在钥匙串访问中的我的证书下显示带有私钥的推送证书:

在此处输入图片说明

此时应该备份开发钥匙串。许多团队将推送证书保存在安全的 USB 驱动器上,致力于内部版本控制或使用 Time Machine 等备份解决方案。开发钥匙串可以在不同的团队成员之间共享,因为它不包含任何个人代码签名凭据。

钥匙串文件位于~/Library/Keychains.

一些第三方推送服务需要隐私增强邮件 (PEM) 格式的证书,而另一些则需要公钥加密标准 #12(PKCS12 或 P12)。从 Apple 下载的证书可用于导出这些格式的证书 - 但前提是您保留了私钥。

将证书转换为 PEM 格式

  1. 在 Keychain Access 中选择之前创建的开发钥匙串。
  2. 我的证书中选择推送证书。它应该有一个私钥。![下载CER推送证书](keychain/import complete.png)
  3. 文件菜单中选择导出项目... 在此处输入图片说明
  4. 在打开的保存面板中,选择隐私增强邮件 (.pem)作为文件格式。
  5. 保存文件


Gau*_*ain 5

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