生成用于设置Apple Push Notifications的.pem文件


Answers:


936

要为您的iOS应用启用推送通知,您需要创建并上载Apple Push Notification证书(.pem文件)给我们,以便我们能够代表您连接到Apple Push Server。

更新版本和更新的屏幕截图在此处

步骤1:登录iOS Provisioning Portal,单击左侧导航栏上的“证书”。然后,单击“ +”按钮。

在此处输入图片说明

步骤2:选择“分发”部分下的Apple Push Notification服务SSL(生产)选项,然后单击“继续”按钮。

在此处输入图片说明

步骤3:选择要用于BYO应用程序的应用程序ID(如何创建应用程序ID),然后单击“继续”以进行下一步。

在此处输入图片说明

步骤4:按照“关于创建证书签名请求(CSR)”步骤创建证书签名请求。

在此处输入图片说明

补充Apple提供的说明。以下是一些其他屏幕快照,可帮助您完成所需的步骤:

步骤4补充屏幕快照1:在Mac上导航到“钥匙串访问”的证书助手。

在此处输入图片说明

步骤4补充屏幕快照2:填写证书信息。单击继续。

在此处输入图片说明

步骤5:上载在步骤4中生成的“ .certSigningRequest”文件,然后单击“生成”按钮。

在此处输入图片说明

步骤6:点击“完成”完成注册,iOS Provisioning Portal页面将刷新,如下图所示:

在此处输入图片说明

然后单击“下载”按钮以下载您刚刚创建的证书(.cer文件)。-双击下载的文件,将证书安装到Mac上的Keychain Access中。

步骤7:在Mac上,转到“钥匙串”,查找刚刚安装的证书。如果不确定哪个证书是正确的,则应以“ Apple Production IOS推送服务:”开头,后跟应用程序的捆绑包ID。

在此处输入图片说明

步骤8:展开证书,您应该看到带有您的姓名或公司名称的私钥。使用键盘上的“选择”键选择两个项目,右键单击(如果使用单键鼠标,则单击鼠标右键),选择“导出2个项目”,如下所示:

在此处输入图片说明

然后将名称为“ pushcert.p12”的p12文件保存到桌面上-现在将提示您输入密码进行保护,您可以单击Enter跳过该密码或输入所需的密码。

步骤9:现在最困难的部分-在Mac上打开“终端”,然后运行以下命令:

cd
cd Desktop
openssl pkcs12 -in pushcert.p12 -out pushcert.pem -nodes -clcerts

步骤10:从桌面删除pushcert.p12,以避免将其误上传到“自己构建”区域。在Mac上打开“终端”,然后运行以下命令:

cd
cd Desktop
rm pushcert.p12

步骤11-新的AWS更新:创建新的pushcert.p12以提交到AWS SNS。双击新的pushcert.pem,然后仅导出绿色的高光。

在此处输入图片说明 信用:AWS新更新

现在,您已经成功创建了Apple Push Notification Certificate(.p12文件)!稍后您将需要将此文件上传到我们的“自己构建”区域。:)


11
看起来像这样,您现在可以直接将其从钥匙串导出到PEM文件(步骤8-10)。
凯尔·克莱格

10
@KyleClegg:怎么样?
尤金2014年

3
什么是“自己创建”区域,为什么我们必须将pem文件上传到该区域?
拉菲2015年

1
为什么互联网上的所有这些答案都忽略了不断问到“自己打造”的真实问题?如果使用Xcode,您在哪里上传该PEM?
RobertyBob

1
就我而言,我需要从p12 cert创建两个pem文件。只需分别在密钥链访问中导出证书和密钥文件,而不是一起导出2个项目。但是这个答案肯定很棒!

79

今天有更简单的解决方案-pem。该工具使生活更加轻松。

例如,要生成或更新您的推送通知证书,只需输入:

fastlane pem 

一分钟内完成。如果您需要沙箱证书,请输入:

fastlane pem --development

就是这样。


9
而且不仅有PEM。整个fastlane工具绝对出色
Benjamin

非苹果系统也可以使用吗?
Twojr 2016年

@KrauseFx,如果我确实是通过pem生成的,如何在此处显示它:developer.apple.com/account/ios/certificate?我发现这对于查看最新的到期日等非常有用吗?这是自动发生的事情吗?
IonicBurger

1
@Nikola无需在iTunes Connect上执行任何操作,您可以立即使用该pem文件
KrauseFx

1
@mikejd我们不需要指定对pem使用哪个p12?
Maulik


3

Apple已更改了颁发的证书的名称。现在,您可以在开发和生产中使用相同的证书。尽管您仍然可以申请仅开发证书,但是您不再可以申请仅生产证书。

请参阅下面的screnshot


1

导出Cert.p12和key.p12之后,这非常简单,请在下面的命令中找到生成“ apns” .pem文件的方法。

https://www.sslshopper.com/ssl-converter.html

command to create apns-dev.pem from Cert.pem and Key.pem

    

openssl rsa -in Key.pem -out apns-dev-key-noenc.pem

    

cat Cert.pem apns-dev-key-noenc.pem > apns-dev.pem

上面的命令对于沙盒和生产都很有用。


1

根据疑难解答推送证书问题

您的Apple Developer Program帐户中可用的SSL证书包含一个公共密钥,但没有一个私钥。私钥仅在创建了上载到Apple的证书签名请求的Mac上存在。公钥和私钥都是导出增强隐私邮件(PEM)文件所必需的。

您可能无法从客户端提供的证书中导出有效的PEM的原因是您没有私钥。证书包含公钥,而私钥可能仅存在于创建原始CSR的Mac上。

您可以:

  1. 尝试从最初创建CSR的Mac上获取私钥。可以从该Mac导出PEM,也可以将私钥复制到另一个Mac。

要么

  1. 创建一个新的CSR,新的SSL证书,这次备份私钥。

0

谢谢!以上所有答案。我希望您有一个.p12文件。现在,打开终端写入以下命令。将终端设置为放置.12文件的路径。

$ openssl pkcs12 -in yourCertifcate.p12 -out pemAPNSCert.pem -nodes
Enter Import Password: <Just enter your certificate password>
MAC verified OK

现在,您的.pem文件已生成。

验证.pem文件 首先,在文本编辑器中打开.pem以查看其内容。证书内容的格式应如下所示。确保pem文件包含证书内容(从BEGIN证书到END CERTIFICATE)以及证书私钥(从BEGIN私钥到END PRIVATE KEY):

> Bag Attributes
>     friendlyName: Apple Push Services:<Bundle ID>
>     localKeyID: <> subject=<>
> -----BEGIN CERTIFICATE-----
> 
> <Certificate Content>
> 
> -----END CERTIFICATE----- Bag Attributes
>     friendlyName: <>
>     localKeyID: <> Key Attributes: <No Attributes>
> -----BEGIN PRIVATE KEY-----
> 
> <Certificate Private Key>
> 
> -----END PRIVATE KEY-----

另外,您可以通过转到SSLShopper 证书解码器来检查证书的有效性,并粘贴证书内容(从BEGIN CERTIFICATE到END CERTIFICATE)以获取有关证书的所有信息,如下所示:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.