为APNS创build.pem文件?

如何创build一个.pem文件存储在托pipe服务器的APN有效载荷数据?

这是我做的,从: blog.boxedice.com和“iPhone高级项目”第10章byJoe Pezzillo。

通过钥匙串中的aps_developer_identity.cer:

  1. 从本地Mac和login钥匙串启动钥匙串访问,按照证书类别进行过滤。 您将看到一个名为“Apple Development Push Services”的可扩展选项
  2. 右键点击“苹果开发推送服务”>导出“苹果开发推送服务ID123”。 将其另存为apns-dev-cert.p12文件,您可以访问它。 没有必要input密码。
  3. 下一个命令将生成PEM格式(隐私增强型邮件安全证书)的Macterminal中的证书:

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

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

开发阶段:

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

第2步:从键.p12创build密钥.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才能获得开发阶段所需的推送通知所需的开发.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创build证书.pem
命令: openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12

第2步:从键.p12创build密钥.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 (如果执行)

脚步:

  1. 使用密钥链访问创buildCSR
  2. 使用私钥创build一个使用密钥链访问的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

input导入密码:

MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:

您首先需要input.p12文件的密码,以便openssl可以读取它。 然后,您需要input将用于encryptionPEM文件的新密码。 本教程再次使用“pushchat”作为PEM密码。 你应该select一些更安全的东西。 注意:如果你没有inputPEM口令,openssl将不会给出错误信息,但生成的.pem文件不会有私钥。

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

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

启动terminal应用程序并在提示符后input以下命令

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

– >> 苹果自己的教程 << – 是我遇到的唯一的一套指令。 这是直截了当的,我可以确认它在Linux的PHP服务器和Windows的PHP服务器上出色地工作。

您可以在页面底部find他们的5步Pem创build过程。

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

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

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

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

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

—–开始私钥—–
MIIEuwIBADANBgkqhk ….等
MIIEuwIBADANBgkqhk ….等
MIIEuwIBADANBgkqhk ….等
MIIEuwIBADANBgkqhk ….等
—–结束私人密钥—–
—– BEGIN CERTIFICATE —–
AwIBAgwIBADAwIBADA ….等
AwIBAgwIBADAwIBADA ….等
AwIBAgwIBADAwIBADA ….等
—–结束证书—–

而已。

我从来不记得创build.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> ?)中。 创build文件后,执行chmod +x signpem.sh以使其可执行,然后运行:

~/signpem myCertificate.p12 myCertificate.pem

并且myCertificate.pem将被创build。