我如何创建一个. pem 文件存储在主机服务器的 APN 有效负载数据?
以下是我所做的,来自: Blog.boxedice.com和“ iPhone 高级项目”第10章作者: Joe Pezzillo。
使用密钥链中的 aps _ development _ Identity. cer:
apns-dev-cert.p12
下一个命令以 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文件。
.cer
c:\OpenSSL-Win32\bin\openssl.exe x509 -in aps_development.cer -inform DER -out developer_identity.pem -outform PEM
这将创建一个文件,然后您需要添加您的私人密钥太。
——开始私人密钥—— 等等 等等 等等 等等 ——结束私人钥匙—— ——开始证书—— AwIBAgwIBADAwIBADA... 等等 AwIBAgwIBADAwIBADA... 等等 AwIBAgwIBADAwIBADA... 等等 ——结束证书——
就是这样。
步骤:
这给了你三个文件:
PushChatKey.p12
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 脚本来简化过程:
.pem
openssl
#!/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.sh
/Users/<username>
chmod +x signpem.sh
~/signpem myCertificate.p12 myCertificate.pem
然后创建 myCertificate.pem。
myCertificate.pem
我会建议一个更简单的解决方案。只要使用 证明。 Certifire 是一个 macOS 应用程序,只需在几秒钟内单击一下就可以生成 Apple Push Notification 证书。
以下是步骤: 1. 下载应用程序。 2. 使用苹果开发者账户凭证登录。 3. 选择应用程式编号 点击“生成”按钮 5你完蛋了!
您将获得.pem 格式和.p12格式的 APN 证书。 更重要的是,您还将得到.pem 和.p12的组合(key + cert) ! 更重要的是,您还将获得所有这些证书的无密码版本!
有一个最简单的方法。如果您的密钥链访问中已经有 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 文件:
如果您已经在 Apple Developer Center 网站上为应用程序设置了 SSL 证书,那么您可以直接跳到转换证书为 PEM 格式。请记住,如果您没有 < em > also 在 Mac 上生成的私钥,而这个私钥创建了上传到 Apple 的签名请求,那么您将会遇到问题。
请继续阅读,以了解如何避免失去对该私钥的跟踪。
Xcode 不控制推送通知的证书或密钥。要为应用程序创建按键并启用推送通知,您必须访问 Apple Developer Center 网站。帐户的证书、标识符和配置文件部分控制 App ID 和证书。
要访问证书和配置文件,您必须是付费的 Apple Developer Program 成员,或者是团队成员。
使用推送通知的应用程序不能使用通配符 AppID 或配置文件。每个应用程序都要求您在 AppleDeveloperCenter 门户中设置一个 AppID 记录,以启用推送通知。
为推送通知创建 SSL 证书是一个包含多项任务的过程。每个任务有几个步骤。所有这些都是以 P12或 PEM 格式导出密钥所必需的。在继续之前回顾一下步骤。
要创建证书,您需要在 Mac 上创建一个证书签名请求(CSR) ,并将其上传到 Apple。
稍后,如果需要将该证书导出为 pkcs12(又名 p12)文件,则需要使用来自 同一个 Mac的密钥链。创建签名请求时,Keychain Access 将在默认密钥链中生成一组密钥。这些密钥对于使用 Apple 将根据签名请求创建的证书是必需的。
有一个专门用于开发凭证的单独密钥链是一个很好的实践。如果这样做,请确保在使用证书助理之前将此密钥链设置为默认值。
在创建证书签名请求时,证书助理将在默认密钥链中生成两个加密密钥。将开发密钥链设置为默认密钥链非常重要,这样密钥就位于正确的密钥链中。
创建签名请求生成一对密钥。在上载签名请求之前,验证开发密钥链是否具有密钥。它们的名称将与签名请求中使用的 通用名称相同。
一旦证书签名请求被创建,将其上传到 Apple Developer Center。苹果将根据签名请求创建推送通知证书。
您的开发密钥链现在应该在 Keychain Access 中的 我的证书下显示带有私钥的推送证书:
此时,应该备份开发密钥链。许多团队将他们的推送证书保存在安全的 USB 驱动器上,承诺进行内部版本控制或使用像时间机器这样的备份解决方案。开发密钥链可以在不同的团队成员之间共享,因为它不包含任何个人代码签名凭据。
钥匙链文件位于 ~/Library/Keychains中。
~/Library/Keychains
一些第三方推送服务需要保密增强邮件格式的证书,而另一些则需要公开密钥加密标准 # 12(PKCS12或 P12)。从苹果下载的证书可以用来导出这些格式的证书——但前提是你必须保留私钥。