如何以.p12文件的形式获取Apple Push Notification Service证书,以便将其转换为.pem文件

如果有任何编写地狱的经验会使我烦恼和写作,那么我想这将是一个荒唐的过程,并且会产生大量无益的Google结果……例如为我的Rails以正确的文件类型创建Apple Push Notification Service证书+ iOS项目。

(此过程需要macOS。)

TL; DR:使用macOS的钥匙串访问权限创建证书签名请求,将其上传到Apple,下载生成的.cer,将其添加到钥匙串,将.cer从钥匙串中导出为.p12,然后使用Terminal转换.p12到一个.pem文件中。 *哇!*

创建证书签名请求

打开“钥匙串访问”,然后在菜单栏中选择“钥匙串访问”>“证书助手”>“从证书颁发机构请求证书”。

选择此选项将弹出“证书助手”窗口。 输入与您的Apple Developer帐户关联的Apple ID,您的姓名,并将最终选项更改为“ Saved to disk”。

单击“继续”将允许您命名证书申请并选择想要保存证书的文件夹。 单击“保存”后,您应该在选定的目标文件夹中找到一个名为CertificateSigningRequest.certSigningRequest的文件。 下一步,我们将其上传到Apple。

下载您的.cer

登录到Apple Developer帐户后,系统会显示帐户概述。 幸运的是,正确的选择是放在最前面和最中心:单击“证书,标识符和配置文件”。

这将带您到将要管理iOS证书的区域。 您会在屏幕左侧找到相关的菜单选项。

此菜单包括一个UX陷阱,使我花了数小时徒劳无果。 在“证书”类别下,您会找到“ APNs身份验证密钥”。单词“ certificate”和“ APNS”可能会导致您得出以下结论:您应该单击“ APNs身份验证密钥”按钮才能创建APNS证书。 ,但是您会错的。 可怕的,可怕的错误。 并且拥有一个无用的(无论出于我们的目的,无论如何).p8文件。

取而代之的是,您将忽略您的直觉,转到下一个类别“标识符”,然后单击“应用程序ID”。这将向您显示与帐户相关联的所有应用程序包ID的列表。 选择将用于APNS的应用程序,然后将展开“应用程序服务”列表。 向下滚动并单击“编辑”。

这将带您进入一个页面,该页面允许您设置和配置应用程序服务。 向下滚动,直到看到标有“推送通知”的服务。

我已经启用了推送通知并创建了两个证书,所以您的屏幕可能看起来有些不同。 单击复选框以启用“推送通知”(如果尚未启用),然后(取决于您要创建开发证书还是生产证书),单击“创建证书”。

然后,您将进入一个页面,解释如何创建证书签名请求(我们已经在上面完成了)。 单击“继续”,上传您的CSR,然后下载生成的.cer文件。

已经累了吗? 我也是。 我们到了一半!

将您的.cer转换为.p12

通过双击或将其拖动到“钥匙串”窗口中,使用“钥匙串访问”打开.cer。 然后使用左侧面板导航到“我的证书”并找到您刚刚添加的证书。 (它也可以添加到“证书”中。)

选择/突出显示/单击您的证书,然后右键单击并选择“导出”,或者在菜单栏中选择“文件”>“导出项目”。

在出现的弹出窗口中,命名您的证书,选择它的目的地,然后选择.p12文件类型。

系统会要求您使用密码来保护此证书(可能是个好主意),但您可以根据需要将其保留为空白。

将您的.p12转换为.pem

我们快到了! 打开终端并导航到保存.p12文件的目录。 我们将使用以下命令将.p12转换为.pem并使用密码保护它:

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

运行此命令将导致终端要求您输入用于保护.p12的密码(如果没有密码,请直接按Enter键),然后终端将要求您使用密码保护新的.pem文件,并要求您确认密码。

– 您将在同一个目录中拥有一个崭新的.pem证书,可以随时发送您内心想要的任何推送通知。

最后的想法

我对于制作.p12格式的Apple Push Notification Service证书(以便将其转换为.pem)感到沮丧,这是对iOS缺乏经验,Apple Developer门户中的UX糟糕以及缺乏相关的Google结果的完美风暴。

最后,我意识到缺少文章说明如何将.p8文件转换为.p12文件是因为1)不可能,或者2)我本来不应该拥有.p8 。 我不了解#1,但是#2带领我进入了一个新的Google兔子洞,最终将我带到了Urban Airship文档中,该文档帮助我完成了上述过程。 我从没想过我会为城市飞艇而感恩,但我们来了。

希望您发现这些信息对您有所帮助,并且Google搜索量比我少!