连接SSL证书和私钥之间的终端错误,以建立安全连接:

Anj*_*nju 15 openssl objective-c apple-push-notifications

我试图做的推送通知我的应用程序和以下链接 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
Run Code Online (Sandbox Code Playgroud)

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

提前致谢

use*_*150 15

起初我也面临着这个问题.

我们有两个文件

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

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

cat cert.pem key.pem > ck.pem
Run Code Online (Sandbox Code Playgroud)

起初我使用下面的命令openssl.

openssl s_client -connect gateway.sandbox.push.apple.com:2195
    -cert cert.pem -key key.pem
Run Code Online (Sandbox Code Playgroud)

这让我回答你提到的错误.之后我尝试使用

openssl s_client -connect gateway.sandbox.push.apple.com:2195
    -cert cert.pem -key ck.pem
Run Code Online (Sandbox Code Playgroud)

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

  • 我做了同样的事情,但问题仍然存在.还有什么建议吗?谢谢 (5认同)

ohh*_*hho 13

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

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert push_development.pem
Run Code Online (Sandbox Code Playgroud)

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

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

openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes
Run Code Online (Sandbox Code Playgroud)


Jam*_*far 6

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