Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 无法连接到APNS:返回代码20(无法获取本地颁发者证书)_Ssl_Push Notification_Ssl Certificate_Apple Push Notifications - Fatal编程技术网

Ssl 无法连接到APNS:返回代码20(无法获取本地颁发者证书)

Ssl 无法连接到APNS:返回代码20(无法获取本地颁发者证书),ssl,push-notification,ssl-certificate,apple-push-notifications,Ssl,Push Notification,Ssl Certificate,Apple Push Notifications,我正在尝试使用PyAPNS向iPhone应用程序发送推送通知。我们已经完成了从苹果开发中心获得证书的过程,该中心运行良好;但是,我们遵循了几个不同的教程,了解如何将证书和私钥组合到一个.pem文件中,对于所有这些教程,尝试使用生成的证书从web服务器使用OpenSSL连接到APNS服务器时会出现以下错误: $ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns.pem CONNECTED(0000000

我正在尝试使用PyAPNS向iPhone应用程序发送推送通知。我们已经完成了从苹果开发中心获得证书的过程,该中心运行良好;但是,我们遵循了几个不同的教程,了解如何将证书和私钥组合到一个.pem文件中,对于所有这些教程,尝试使用生成的证书从web服务器使用OpenSSL连接到APNS服务器时会出现以下错误:

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns.pem
CONNECTED(00000003)
depth=1 C = US, O = "Entrust, Inc.", OU = www.entrust.net/rpa is incorporated by  reference, OU = "(c) 2009 Entrust, Inc.", CN = Entrust Certification Authority - L1C
verify error:num=20:unable to get local issuer certificate
verify return:0
[...certificate chain, server certificate, etc.]
有时我们能够在所有这些结束时键入一些内容,并且直到我们按enter键连接才会关闭,有时不会(它会立即关闭),但即使我们似乎有连接,当我们尝试发送推送通知时,PyAPNS总是失败,并给出错误“Fault 500:无法连接到APNS服务器”。”,我只能假设这与“无法获得本地颁发者证书”的原因相同——尽管我不知道这是什么原因

我们一直遵循的教程包括:

是的,我们已经从私钥中删除了密码,当我们尝试连接OpenSSL时,私钥不会要求密码,所以这部分工作正常


我们不知道出了什么问题。令人恼火的是,所有这些教程(显然还有苹果)都认为你使用的是Mac电脑,而我在Windows上开发的服务器(我正在开发的服务器)是Ubuntu;我在Mac电脑上的同事在将生成的文件发送给我上传到服务器并执行最后的步骤之前,一直在做第一步的各种前缀。不知何故,这可能与此有关吗?或者,是否有一个必要的服务器设置步骤到处都被忽略了?

使用raywenderlich.com教程中的simplepush php脚本测试您的证书,然后我们就可以从那里开始了。有时,证书看起来不错,但苹果对所有这些东西都非常挑剔

错误二十我认为这意味着您的私钥有问题,并且我认为您的配置文件也可能有问题,根据以下内容:


确保您正确导出了所有内容,如果需要,请撤销并生成新证书。希望你能解决这个问题!:)

如Ray Wenderlich所述,您可能需要将以下内容添加到php文件中:

stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');
您可以在此处下载证书颁发机构文件:

您是否将密钥与证书一起导出?这通常是第一个可能重复的问题。在raywenderlich.com的教程中,使用simplepush php脚本测试证书现在对我来说效果很好。也许你是对的,苹果非常挑剔。我应该向前看最后的结果。