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

Posted

技术标签:

【中文标题】无法连接到 ssl://gateway.push.apple.com:2195(连接超时)【英文标题】:Unable to connect to ssl://gateway.push.apple.com:2195 (Connection timed out) 【发布时间】:2012-03-28 15:48:06 【问题描述】:

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(虚拟 私人服务器)。便宜的共享主机帐户还不够好。 您需要能够在服务器上运行后台进程,安装 SSL 证书,并且能够在 某些端口。大多数共享托管服务提供商不允许您这样做, 虽然如果你问他们可能会。但是,我真的建议使用 VPS 主机,如 Linode。

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

最后更新:(希望对某人有所帮助)似乎有一个错误,因为正确的是我不能将推送通知发送到沙箱也不发送到我的主机(TMDHosting)的生产服务器:我的共享主机没有打开 2195 端口。更换供应商:一切正常。

【问题讨论】:

最后,你用的是什么Provider?,我也有同样的问题:( 【参考方案1】:

米维,

感谢这篇详细的文章。

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

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

不管怎样,我们通过 openssl 的命令行测试得到一个有效的握手,就像你做的那样。

我们也可以让沙盒/开发证书正常工作。

您能否告诉我们您切换到哪个提供商,以防我们需要进行切换?

谢谢。

【讨论】:

我是意大利人:我问过他们:devise.it/en 的域(具有专用 IP 地址)。我不知道他们是否可以帮助您,无论如何我通过谷歌搜索找到了许多提供商,您可以在其中注册一个开放 2195 端口的域。也见这里“***.com/questions/1593820/…”。希望有帮助!

以上是关于无法连接到 ssl://gateway.push.apple.com:2195(连接超时)的主要内容,如果未能解决你的问题,请参考以下文章

某些设备的令牌无效

无法接收生产 apns 的推送消息

FTP总是无法连接到服务器

关于苹果PUSH推送的问题

SQL SERVER2008无法连接到服务器

无法连接到虚拟机怎么解决?怎么解决?