无法连接到ssl://gateway.push.apple.com:2195(连接超时)

时间:2012-03-28 15:48:06

标签: xcode ssl push-notification apple-push-notifications pem

我对Apple推送通知感到疯狂! 我在Ray Wanderlich教程之后开发了我的应用程序和测试通知,一切正常,直到我用分发文件更改文件.pem并将连接字符串从gateway.sandbox.push-apple.com更改为gateway.push -apple.com。

现在如果我尝试发送消息,服务器返回

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to     ssl://gateway.push.apple.com:2195 (Connection timed out)
Failed to connect: 110 Connection timed out

php文件和.pem文件在TMDHosting上:我试着问他们端口号2195是否已关闭,因为谷歌搜索我发现错误意味着端口已关闭。

但是,我无法理解错误是否与证书或服务器相关联。

奇怪的是,如果我按照终端的程序来测试.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
     0 s:/C=US/ST=California/L=Cupertino/O=Apple Inc/OU=Internet     Services/CN=gateway.push.apple.com
       i:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)     2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
     1 s:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)     2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
       i:/O=Entrust.net/OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/OU=(c)     1999 Entrust.net Limited/CN=Entrust.net Certification Authority (2048)
---
Server certificate
-----BEGIN CERTIFICATE-----
    MIIEXTCC..........
-----END CERTIFICATE-----
    subject=/C=US/ST=California/L=Cupertino/O=Apple Inc/OU=Internet         Services/CN=gateway.push.apple.com
    issuer=/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)      2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 2541 bytes and written 2039 bytes
    ---
    New, TLSv1/SSLv3, Cipher is AES256-SHA
    Server public key is 1024 bit
    Secure Renegotiation IS supported
   Compression: NONE
   Expansion: NONE
    SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
        Session-ID: 
        Session-ID-ctx: 
        Master-Key:     CBA98981BB512ED2FDF0C003F4556FDDA564BEBBEFC6528C37D8E0336BC141AEC6D7E014568B334B8330FFFE266E8CB4
    Key-Arg   : None
    Start Time: 1332945845
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

这让我觉得它不是.pem问题......

我错了吗?

我已经在这里阅读了所有类似的问题,并尝试将端口号从2195更改为30,但没有任何变化。 提示?

编辑:我发现that似乎与我的问题相同:TMDHosting告诉我

  

...您位于共享托管环境下并打开一个   你的港口是不可能的。但请注意该地址   您在端口2195上建立连接的人与之无关   我们的服务器换句话说,你正试图建立一个连接   端口2195上的远程服务器。为了建立这种连接   上面指定的端口,您应该确保打开端口   远程服务器上的传入连接,而不是服务器上的传入连接   您与我们的帐户所依赖的。

我需要VPS吗?

EDIT2

在我接下来的教程中,我找到了

  

..您需要一台连接到互联网的服务器。推   通知始终由服务器发送。对于开发,您可以使用   你的Mac作为服务器(我们将在本教程中做)但是   生产使用,你至少需要像VPS(Virtual   私人服务器)。廉价的共享主机帐户不够好。   您需要能够在服务器上运行后台进程并进行安装   SSL证书,能够进行传出TLS连接   某些港口。大多数共享托管服务提供商都不允许你这样做,   虽然他们可能会问你。但是,我真的建议使用   像Linode这样的VPS主机。

最后我想我确实需要一个VPS。你能确定一下吗? 但是,如果我使用沙盒服务器发送推送通知,为什么它在没有VPS的情况下正常工作?

最后更新 :(希望能帮到某人)好像有一个错误,因为正确的是我无法向沙箱发送推送通知,也不能我托管的生产服务器(TMDHosting):我的共享主机没有打开2195端口。改变了提供者:一切正常。

1 个答案:

答案 0 :(得分:0)

MIWI,

感谢您的详细撰写。

我们遇到了类似的问题,这让我们感到疯狂。

当我们测试证书时,它似乎工作,除了: “验证错误:num = 20:无法获得本地颁发者证书”

无论如何,我们与openssl的命令行测试进行有效握手,就像你一样。

我们也可以使sandbox / dev证书正常运行。

如果我们需要进行切换,您能告诉我们您切换到的提供商吗?

感谢。