我在创建 p12 文件以放置在 Windows 服务器上时遇到一些严重问题。
我使用了两个不同的网站来帮助我弄清楚我需要做什么:
http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
我使用的第二个网站是网站内的评论如下:
首先我创建一个证书签名请求。 然后我将其上传到我的应用程序 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
请问有人知道我做错了什么吗,我厌倦了兜圈子。
当我将证书上传到服务器并将临时版本从设备上的应用程序中删除时,我仍然没有收到我发送的任何通知
提前致谢。
看看这个答案是否有帮助为 APNS 创建 .pem 文件?
简而言之:
openssl pkcs12 -in apns-dev-cert.p12 -out apns-dev-cert.pem -nodes -clcerts
当您第一次生成 CSR 时,您是使用私钥生成的。这可能是不透明的,具体取决于您的操作方式。我所做的是使用 openssl 生成密钥,然后使用该密钥生成 CSR。当您制作 p12 时,该键就是“in key”。
这是我的步骤
openssl genrsa -out aps_development.key -passout pass:foobar 2048
然后您可以使用刚刚创建的密钥来创建 CSR
openssl req -new -key aps_development.key -out CertificateSigningRequest.certSigningRequest -subj "/[email protected], 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
openssl pkcs12 -export -in aps_development.pem -inkey aps_development.key -out aps_development.p12
我们需要 SSL 证书(扩展名为
.cer
或 .crt
的文件)和密钥证书(扩展名为 .key
的文件)来生成 .p12
文件。
运行此命令:
openssl pkcs12 -export -in certificate.cer -inkey certificate.key -name personal -out file.p12
-in certificate.cer
:证书私钥-inkey certificate.key
:证书公钥。可能是一个 .crt
文件-name
:可以指定一个可选名称-out
: p12 openssl 命令将生成的文件名