如何使用openssl创建P12文件

时间:2013-09-24 12:38:35

标签: ssl x509certificate

关于能够在我的Windows服务器上创建一个p12文件,我遇到了一些严重的问题。

我使用了两个不同的网站来帮助我解决我需要做的事情:

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

请任何人知道我做错了什么我很厌烦绕圈子。

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

查看此答案是否有助Creating .pem file for APNS?

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

答案 1 :(得分:0)

首次生成CSR时,您使用私钥进行了操作。根据您的操作方式,这可能是不透明的。我所做的是使用openssl生成密钥,然后使用该密钥创建CSR。当你制作p12时,那个键就是'in key'。

以下是我的步骤

  1. 第一步是生成证书签名请求。这与任何SSL证书相同。你需要一个私钥。
  2. 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"

    1. 从这里开始,您将访问developer.apple.com并撤销当前的APN证书并制作新证书。它会询问您的CSR,当它完成时它会给你一个.cer文件。

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

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

      1. 将.pem转换为.p12。您将注意到您提供的是在步骤1开始时创建的密钥文件。您将需要在那里提供的密码。
      2. openssl pkcs12 -export -in aps_development.pem -inkey aps_development.key -out aps_development.p12