生成.pem文件用于设置苹果推送通知。

307

我尝试了很多次生成.pem文件,每次都从客户端帐户生成证书,然后使用终端生成.pem文件,但都没有成功。有人能够给出逐步的操作流程吗?

8个回答

967

为了在您的iOS应用程序中启用推送通知,您需要创建并上传苹果推送通知证书(.pem文件)到我们这里,这样我们就可以代表您连接到苹果推送服务器。

(更新版本含有更新的截图请点此查看)

步骤1:登录iOS供应商门户,在左侧导航栏中单击“证书”。然后,单击“+”按钮。

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

以下是Apple提供的说明的补充说明。以下是一些辅助截图,以帮助您完成所需的步骤:

步骤4补充说明1:导航到Mac上的密钥链访问中的证书助手。

enter image description here

步骤4补充说明2:填写证书信息。单击继续。

enter image description here

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

enter image description here

步骤6:单击“完成”以完成注册,iOS供应商门户页面将被刷新,看起来像下面的屏幕:

enter image description here

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

步骤7:在您的Mac上,转到“密钥链”,查找您刚刚安装的证书。如果不确定哪个证书是正确的,它应该以“Apple Production IOS Push Services:”开头,后跟您的应用程序包ID。

enter image description here

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

enter image description here

然后将p12文件保存为“pushcert.p12”放置在桌面上 - 现在您将被提示输入密码

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

第十步:将pushcert.p12从桌面移除,避免误上传到“Build Your Own”区域。在您的Mac上打开“终端”,并运行以下命令:

cd
cd Desktop
rm pushcert.p12

第11步 - 新的AWS更新:创建新的pushcert.p12以提交给AWS SNS。双击新的pushcert.pem,然后只导出绿色部分高亮显示的内容。

enter image description here 来源:AWS新更新

现在您已成功创建了一个Apple推送通知证书(.p12文件)!稍后您需要将此文件上传到我们的“构建您自己的区域”。 :)


11
看起来现在你可以直接从钥匙串导出到 PEM 文件了(步骤 8-10)。 - Kyle Clegg
3
"Build Your Own"区域是什么,为什么我们需要将pem文件上传到该区域? - Rafi
我得到了一个stream_socket_client()错误:无法连接到ssl://gateway.push.apple.com:2195 (Connection refused)。这就是为什么我在问,因为我可能忘记将pem文件上传到“Build Your Own”区域。 - Rafi
1
为什么互联网上所有这些答案都忽略了关于“Build Your Own”是什么的真正问题?如果使用Xcode,您在哪里上传此PEM? - RobertyBob
1
在我的情况下,我需要从p12证书创建两个pem文件。 只需在钥匙串访问中分别导出证书和密钥文件,而不是一起导出2个项目。但这个答案绝对棒极了! - wei
显示剩余10条评论

82
今天有一种更简单的解决方案——pem,这个工具可以让你的生活变得更加轻松。例如,要生成或更新你的推送通知证书,只需输入:
fastlane pem 

它在不到一分钟的时间内完成。如果您需要沙盒证书,请输入:

fastlane pem --development

这就是基本内容了。


9
不仅仅有 PEM,整个 fastlane 工具都非常出色。 - Benjamin
1
它也适用于非苹果系统吗? - twicejr
1
@Nikola 无需在iTunes Connect上采取任何行动,您可以立即使用该pem文件。 - KrauseFx
1
@mikejd 我们不需要指定哪个p12文件用于pem文件吗? - Maulik
这个回答没有提供足够的细节,关于如何做这件事以及如何从P12导出文件中提取PEM文件。 - jxd
显示剩余3条评论

11
$ cd Desktop
$ openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem

这个可行吗?我使用这种方法在Windows 10上制作了一个PEM文件,但是当我使用生成的PEM发送推送通知时,出现了“无法连接到'ssl://gateway.sandbox.push.apple.com”的错误。 - Arivan Bastos

5
感谢以上的回答。我希望你有一个.p12文件。现在,打开终端并输入以下命令。将终端设置为您放置.p12文件的路径。
$ 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 CERTIFICATE到END CERTIFICATE)和证书私钥(从BEGIN PRIVATE KEY到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)粘贴到以下显示的位置,以获取有关证书的所有信息并检查证书的有效性:

enter image description here


1
感谢@gurjinder的答案,只有这个解决方案对我有效。其他所有解决方案在终端中都会给出错误“未知选项”-clcerts'。你救了我的一天。 - IPS Brar

3

苹果已更改所发放的证书名称。您现在可以将同一证书用于开发和生产环境。虽然您仍然可以请求仅用于开发环境的证书,但不能再请求仅用于生产环境的证书。

请参见以下截图


1
根据故障排除推送证书问题
SSL证书中只包含公钥而不是私钥。私钥仅存在于创建上传到Apple的证书签名请求的Mac上。导出隐私增强邮件(PEM)文件需要公钥和私钥。
很可能无法从客户端提供的证书导出有效的PEM的原因是您没有私钥。证书包含公钥,而私钥可能仅存在于创建原始CSR的Mac上。
您可以选择:
1. 尝试从最初创建CSR的Mac获取私钥。可以从该Mac导出PEM,或者将私钥复制到另一台Mac。
2. 创建新的CSR、新的SSL证书,并备份私钥。

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

上述命令对沙箱和生产环境均有用。

0

2023

创建和下载推送通知证书并将其导出为.p12.pem的最新方法:

将证书下载到您的计算机

  1. 登录Apple开发者门户网站上的帐户,然后选择“证书”
  2. 单击“+”,选择“Apple Push Notification service SSL(Sandbox&Production)”,然后选择“继续”
  3. 选择您的应用程序,然后选择“继续”
  4. 上传您的证书签名请求(.csr),选择“继续”,然后选择“下载”

保存到钥匙串中

  1. 双击新下载的.cer文件,它将自动保存到您的钥匙串中。钥匙串将打开并显示您的证书列表。

获取.p12文件

  1. 找到证书,右键单击它,然后选择“导出...”并将其保存到桌面。它会要求您设置密码以保护它,但这是可选的,您实际上不需要它。

将.p12转换为.pem

  1. 打开终端并导航到您的.p12目标
  2. 使用下面的命令,并将“certificateName”更改为证书名称,然后按Enter键
  3. 它会要求您输入第6步输入的密码,请输入并按Enter键。如果您在第6步没有提供密码,请只需按Enter键,您将在保存.p12的相同位置保存.pem文件。

openssl pkcs12 -in certificateName.p12 -out certificateName.pem -nodes -clcerts


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接