16

我正在尝试在我的应用程序中进行推送通知并点击此链接 http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

我的系统已成功连接到 telnet,但是当我输入连接 ssl 证书和私钥的查询时,发现错误

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem
unable to load client certificate private key file
1301:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY

任何人都可以告诉我什么类型的错误以及它的解决方案是什么?

提前致谢

4

5 回答 5

15

起初我也面临这个问题。

我们有两个文件

1) 一个aps_development.cer来自苹果 2) 另一个 1 来自keychain access我们刚刚创建的通用名称。

之后,两者都将其转换为.pem文件。例如,cert.pemkey.pem。之后使用以下命令组合这两个文件

cat cert.pem key.pem > ck.pem

起初我使用下面的命令打开ssl。

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

这使我返回了您提到的错误。之后我尝试使用

openssl s_client -connect gateway.sandbox.push.apple.com:2195
    -cert cert.pem -key ck.pem

然后它已经工作了。希望这可以帮助。

于 2012-05-13T16:52:21.730 回答
15

以下命令足以验证密钥/证书:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert push_development.pem

关键部分是在从 Keychain Access 导出 .p12 时选择证书私钥(您将被要求输入 3 个密码,一个用于 .p12,一个用于证书,一个用于私钥)。

要将 .p12 转换为 .pem,请按照Apple的说明进行操作:

openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
于 2013-10-17T08:12:23.293 回答
6

我在为企业分发生成 PEM 文件时遇到了同样的问题,但后来我发现我针对iPhone 分发证书密钥生成了一个 p12 文件,尽管我应该针对Apple Production iOS Push Servies密钥生成 p12。如果有人使用了分发密钥,希望这可以解决问题。

于 2013-05-30T10:15:22.887 回答
3

您好请按照以下命令进行操作。第1步 openssl pkcs12 -clcerts -nokeys -out developer_key.pem -in developer_key.p12

注意:只需在终端上拖动文件路径...

第2步 openssl pkcs12 -nocerts -out apns_key.pem -in apns_key.p12

第三步 openssl pkcs12 -in developer_key.p12 -out developer_key.pem -nodes -clcerts

第4步 openssl pkcs12 -in apns_key.p12 -out apns_key.pem -nodes -clcerts

第 5 步 cat apns_key.pem developer_ket.pem >developer.pem

对分发证书执行相同的步骤

创建 developer.pem 和 distribution.pem 后

请在以下命令中验证这两个文件。

Step6 openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert developer.pem -debug -showcerts -CAfile "Entrust.net.Certification Authority (2048).pem

于 2013-10-24T05:22:18.470 回答
2

通知是通行短语必须超过 3 个字符。

我刚刚修复了密码短语是1234 :D

于 2015-10-14T16:49:50.643 回答