为APNS创build.pem文件?
如何创build一个.pem文件存储在托pipe服务器的APN有效载荷数据?
这是我做的,从: blog.boxedice.com和“iPhone高级项目”第10章byJoe Pezzillo。
通过钥匙串中的aps_developer_identity.cer:
- 从本地Mac和login钥匙串启动钥匙串访问,按照证书类别进行过滤。 您将看到一个名为“Apple Development Push Services”的可扩展选项
- 右键点击“苹果开发推送服务”>导出“苹果开发推送服务ID123”。 将其另存为
apns-dev-cert.p12
文件,您可以访问它。 没有必要input密码。 -
下一个命令将生成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
(如果执行)
脚步:
- 使用密钥链访问创buildCSR
- 使用私钥创build一个使用密钥链访问的P12
- 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。