我该如何创建一个.pem文件以存储在托管服务器上用于APN负载数据?
我该如何创建一个.pem文件以存储在托管服务器上用于APN负载数据?
以下是我的做法:来源自于 boxeddice 的博客和 Joe Pezzillo 的 "iPhone Advanced Projects" 第 10 章。
在钥匙串中使用 aps_developer_identity.cer 后:
apns-dev-cert.p12
文件。无需输入密码。下一条命令会在 Mac 的终端上生成 PEM 格式(隐私增强型邮件安全证书)的证书:
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
在服务器上,使用 chmod 400 命令设置此未加密密钥的文件权限。开发阶段:
步骤1: 从证书.p12文件创建.pem证书
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
步骤2: 从密钥.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: 现在,我们必须合并密钥.pem和证书.pem以获得在应用程序的开发阶段所需的Development .pem。
如果执行了第3步,则运行:
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
步骤5: 检查证书有效性并检查与APNS的连接。
如果执行了第3步,则运行:
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
生产阶段:
步骤1: 从证书.p12文件创建.pem证书
openssl pkcs12 -clcerts -nokeys -out apns-pro-cert.pem -in apns-pro-cert.p12
第二步:从 .p12 密钥文件创建 .pem 格式密钥文件
openssl pkcs12 -nocerts -out apns-pro-key.pem -in apns-pro-key.p12
第三步(可选):如果要去除在第二步中要求的密码
openssl rsa -in apns-pro-key.pem -out apns-pro-key-noenc.pem
第四步:现在需要将密钥 .pem 文件和证书 .pem 文件合并以获取用于应用程序生产阶段推送通知所需的生产 .pem 文件。
如果执行了第3步,请运行:
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
第五步:检查证书有效性和与 APNS 的连接。
如果执行了第3步,请运行:
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
步骤:
这将给您三个文件:
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
打开终端应用程序,在提示符后输入以下命令
openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
注意:您必须在App Store Connect中拥有团队代理或管理员角色才能执行这些任务。如果您不是App Store Connect团队的一部分,则可能不会受到影响。
向iOS应用程序发送推送通知需要创建加密密钥。过去,这是一个繁琐的过程,使用SSL密钥和证书。每个SSL证书都专门用于单个iOS应用程序。2016年,苹果推出了一种新的身份验证密钥机制,更可靠且易于使用。新的身份验证密钥更灵活,易于维护,并适用于多个iOS应用程序。
尽管身份验证密钥已经推出多年,但并不是所有服务都支持它们。FireBase和Amazon Pinpoint支持身份验证密钥。Amazon SNS、Urban Airship、Twilio和LeanPlum则不支持。许多开源软件包尚未支持身份验证密钥。
要创建所需的SSL证书并将其导出为包含公钥和私钥的PEM文件,请执行以下操作:
如果你已经在Apple Developer Center网站上为应用程序设置了SSL证书,那么你可以跳过下一步到转换证书为PEM格式。 请记住,如果你不同时拥有在Mac上生成签名请求并上传到苹果公司的私钥,你将会遇到问题。
继续阅读以了解如何避免丢失该私钥。
Xcode不控制推送通知的证书或密钥。要为应用程序创建密钥并启用推送通知,你必须前往苹果开发者中心网站。你账户下的“证书、标识符和配置文件”部分控制应用程序ID和证书。
要访问证书和配置文件,你必须拥有付费的苹果开发者计划成员资格或是参与该计划的团队成员之一。
使用推送通知的应用程序不能使用通配符应用程序 ID 或配置文件。每个应用程序都需要在 Apple 开发中心门户网站上设置一个应用程序 ID 记录,以启用推送通知。
要创建证书,您需要在Mac上制作证书签名请求(CSR),并将其上传到Apple。
稍后,如果您需要将此证书导出为pkcs12(又称p12)文件,则需要使用相同的Mac上的钥匙串。当创建签名请求时,钥匙串访问会在默认钥匙串中生成一组密钥。这些密钥对于处理苹果公司从签名请求创建的证书是必需的。
这是一个好习惯,专门为开发凭证创建一个单独的钥匙串。如果您这样做,请确保在使用证书助手之前将此钥匙串设置为默认值。一旦创建了证书签名请求,请将其上传到Apple开发者中心。Apple将从签名请求创建推送通知证书。
现在,在钥匙串访问中,您的开发关键链应该显示带有私钥的推送证书在我的证书下:
在此时,开发钥匙串应该备份。许多团队将其推送证书保存在安全的USB驱动器上,提交到内部版本控制或使用像Time Machine这样的备份解决方案。开发钥匙串可以在不包含任何个人代码签名凭据的情况下在不同团队成员之间共享。.pem
文件的选项已被禁用。我只能将其导出为.p12
或.cer
,适用于我拥有的所有3个沙盒证书+密钥。我甚至创建了一个新的沙盒证书,但仍然无法导出.pem
文件。有任何想法吗? - mfaani你可以在这里查看。我有详细的过程描述和图片,从创建证书、应用程序密钥到配置文件,最终生成pem文件。
http://docs.moengage.com/docs/apns-certificate-pem-file在安装OpenSSL之后,我是在Windows 7上完成的(链接指向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....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
MIIEuwIBADANBgkqhk....etc
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
AwIBAgwIBADAwIBADA....etc
AwIBAgwIBADAwIBADA....etc
AwIBAgwIBADAwIBADA....etc
-----END CERTIFICATE-----
如果您已经在钥匙串访问中有apns p12文件,那么创建.Pem文件的最简单方法如下:
打开终端并输入以下命令:
开发环境 openssl pkcs12 -in apns-div-cert.p12 -out apns-div-cert.pem -nodes -clcerts
生产环境 openssl pkcs12 -in apns-dist-cert.p12 -out apns-dist-cert.pem -nodes -clcerts
请将您的P12文件重命名为此名称:apns-div-cert.p12,否则您需要输入您的文件名。谢谢!