如何使用 openssl 创建 P12 文件

Posted

技术标签:

【中文标题】如何使用 openssl 创建 P12 文件【英文标题】:How to create P12 file using openssl 【发布时间】:2013-09-24 12:38:35 【问题描述】:

在创建 p12 文件以放置在我的 Windows 服务器上时,我遇到了一些严重的问题。

我使用了两个不同的网站来帮助我确定我需要做什么:

http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

我使用的第二个网站是网站内的评论如下:

http://arashnorouzi.wordpress.com/2011/06/19/sending-apple-push-notifications-in-asp-net-and-c-–-part-4-apns-sharp-c-wrapper-class/

首先我创建一个证书签名请求。 然后我将它上传到我的应用程序 ID,它允许我生成 ape_dev 证书。 然后我转到我的钥匙串并导航到我导出刚刚创建的 .p12 证书的“钥匙”。

我现在有三个不同的文件

我的 p12 文件、我的开发证书和我的证书签名请求。

然后我打开终端并输入以下内容:

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

这会创建一个新的 pem 证书。

我输入的内容如下

$ openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12

它提示我输入密码,我使用与创建证书时相同的密码。

完成此操作后,我留下了 2 个新文件,它们都是 PEM 文件。

我需要将这两个 PEM 文件合并到一个 p12 文件中,以便它能够在我的 Windows 服务器上运行。

我已经尝试使用以下行组合它

openssl pkcs12 -export \
-in aps_developer_identity.pem \
-out aps_developer_identity.p12  \
-inkey APSCertificates.pem

这实际上有效并给了我一个 p12 文件。 然后我切换回他的 raywenderlich 网站并输入以下内容:

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 
-cert PushChatCert.pem -key PushChatKey.pem

它加载但我收到以下错误:

error:num=20:unable to get local issuer certificate

请任何人知道我做错了什么,我厌倦了兜圈子。

当我将证书上传到服务器并将临时版本从设备上的应用程序中删除时,我仍然没有收到我发送的任何通知

提前致谢。

【问题讨论】:

【参考方案1】:

看看这个答案是否有帮助Creating .pem file for APNS?

简而言之:openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts

【讨论】:

我需要将它从两个单独的 pem 文件更改为一个组合的 p12 文件。这条线还有同样的效果吗?【参考方案2】:

当您第一次生成 CSR 时,您使用的是私钥。这可能是不透明的,具体取决于您的操作方式。我所做的是使用 openssl 生成密钥,然后使用该密钥生成 CSR。当您制作 p12 时,该键就是“输入键”。

这是我的步骤

    第一步是生成证书签名请求。这与任何 SSL 证书相同。为此,您需要一个私钥。

openssl genrsa -out aps_development.key -passout pass:foobar 2048

然后你可以使用你刚刚创建的密钥来创建 CSR

openssl req -new -key aps_development.key -out CertificateSigningRequest.certSigningRequest -subj "/emailAddress=yourAddress@example.com, CN=John Doe, C=US"

    从这里您将转到 developer.apple.com 并撤销当前的 APN 证书并创建一个新证书。它会询问您的 CSR,完成后会给您一个 .cer 文件。

    将 .cer 文件转换为 DER 格式的 .pem 文件(假设 aps_development.cer 是您从 Apple 开发者网站下载的文件)。

openssl x509 -in aps_development.cer -inform DER -outform PEM -out aps_development.pem

    将 .pem 转换为 .p12。您会注意到,您正在提供您在第 1 步开始时创建的密钥文件。您将需要在此处提供的密码。

openssl pkcs12 -export -in aps_development.pem -inkey aps_development.key -out aps_development.p12

【讨论】:

以上是关于如何使用 openssl 创建 P12 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OpenSSL 中将 jks 文件转换为 p12 文件?

Python p12 到 pem

Windows安装使用Openssl创建pks p12证书

OpenSSL 1.0.0生成p12jkscrt等格式证书的命令个过程

使用 PHP 从 p12 证书文件中获取信息

利用openssl生成苹果p12文件