2009-11-19 90 views
149

如何创建一个.pem文件以存储在托管服务器中以获取APN有效载荷数据?为APNS创建.pem文件?

+1

我可以使用.p12代替apns而不是.pem吗? – 2016-03-31 13:19:37

+0

.pem的FYI定义:https://serverfault.com/a/21158/193377 PEM本身不是证书,它只是一种编码数据的方式。 ....粘贴到电子邮件正文中是安全的,因为它具有锚线并且是7位清洁的。 – AnneTheAgile 2017-09-13 15:13:34

+0

https://iosdevcenters.blogspot.com/2017/09/how-to-create-pem-file-for-apns-ios.html – 2017-11-21 02:51:39

回答

303

下面是我做的,从:blog.boxedice.com和乔佩齐罗的“iPhone高级项目”第10章。

随着在钥匙串aps_developer_identity.cer:从您的本地Mac和从登录钥匙串

  1. 启动钥匙串访问,过滤器由证书类别。您将看到一个名为“Apple Development推送服务”的可扩展选项
  2. 右键单击“Apple开发推送服务”>导出“Apple开发推送服务ID123”。将此文件另存为apns-dev-cert.p12文件,您可以在其中访问它。无需输入密码。
  3. 下一个命令生成Mac的终端PEM格式(增强保密邮件安全证书)的证书:

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

在通过使用chmod 400设置这种未加密的密钥的文件权限的服务器。

+3

我已经按照上述步骤,现在它的工作。我已经保持证书和我的本地Web服务器上的PHP脚本(Xampp)。 我能够得到设备令牌,并且我在php脚本中使用它。 php脚本能够连接并发送有效载荷数据。但仍然无法获得PUSH通知。 问题是什么?通知是否需要时间才能达到? – Biranchi 2009-11-19 12:16:42

+2

'chmod 400' YES !!!!!!这是我需要做的 – 2012-08-28 14:50:09

+0

使用这个,我也创建了键和修改的权限。但是,我仍然无法连接到APNS服务器,并且反馈命令仍然返回'#上建立到feedback.push.apple.com的连接''。任何线索......? – Prem 2013-01-10 12:38:54

10

- >>Apple's own tutorial < < - 是我遇到的唯一一套工作指令。它直截了当,我可以证实它在linux php服务器和windows php服务器上的出色工作。

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

+0

是的!只需按照简单的教程。只需一个简单的openssl命令。我不知道它是否重要,但我通过SSH'ing将命令运行到连接到APNS的服务器上。 – tylerl 2014-04-12 07:00:44

+1

@tylerl,PEM可以从任何机器生成 - 不一定是它将驻留的服务器。 – capikaw 2014-08-27 14:51:33

+0

我是否需要在部署php代码的服务器本身上运行此过程?或者我可以使用从我的mac生成的.pem文件? – Jatin 2015-02-04 17:15:37

14

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

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

生成一个p12后,这应该是答案。 – Stone 2015-11-08 21:34:44

1

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

使用此方法,您只需要从Apple下载的.cer文件。

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

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

----- BEGIN PRIVATE KEY -----
MIIEuwIBADANBgkqhk ....等
MIIEuwIBADANBgkqhk ....等
MIIEuwIBADANBgkqhk ....等
MIIEuwIBADANBgkqhk ....等
----- END PRIVATE KEY -----
----- BEGIN CERTIFICATE -----
AwIBAgwIBADAwIBADA ....等
AwIBAgwIBADAwIBADA ....等
AwIBAgwIBADAwIBADA。 ...等
----- END CERTIFICATE -----

就是这样。

54

步骤:

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

这给了你三个文件:

  • The C SR
  • 私钥为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

187

发展阶段:

第1步:从证书的.p12
创建证书.PEM 指挥:openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

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

第4步:现在我们有合并Key.pem和Certificate.pem以获得开发阶段所需的开发.pem应用程序的开发阶段
Comman d: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)

P roduction阶段:

第1步:从证书创建证书。质子交换膜的.p12
命令:openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

步骤2:创建一个从主要的.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

第4步:现在我们要合并的关键。质子交换膜和证书即可生产。质子交换膜所需的.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 (如果执行)

+4

谢谢,这是唯一一个为我工作的人。 – 2015-03-04 00:06:48

+5

将它保存在我的宝库中! :P有史以来最伟大的回答! – Blackening 2015-07-08 08:37:47

+3

你是这位作品的神,谢谢。投票。这应该是答案,因为它深入探讨如何一步步创建它 – MNM 2016-05-25 02:20:18

1

我从来不记得创建.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将被创建。

2

我会建议一个更简单的解决方案。只需使用Certifire
Certifire是一个macOS应用程序,只需在几秒钟内点击一次即可生成Apple推送通知证书。

以下是步骤:
1.下载应用程序。
2.使用Apple开发者帐户凭据登录。
3.选择应用程序ID
4.单击“生成”按钮
5.完成!

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

enter image description here

enter image description here

0

有创造.PEM文件,如果你已经APNS P12文件在你的钥匙链访问的最简单的方法。

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

对于商发展 OpenSSL的PKCS12 -in APNS-DIV-cert.p12 -out APNS-DIV-cert.pem -nodes -clcerts

另外,制造 OpenSSL的PKCS12 -in APNS - 距离 - cert.p12退房手续APNS-DIST-cert.pem -nodes -clcerts

重命名这个名字您的P12文件:APNS-DIV-cert.p12否则代替这需要输入y我们的文件名谢谢!!