我对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端口。改变了提供者:一切正常。
答案 0 :(得分:0)
MIWI,
感谢您的详细撰写。
我们遇到了类似的问题,这让我们感到疯狂。
当我们测试证书时,它似乎工作,除了: “验证错误:num = 20:无法获得本地颁发者证书”
无论如何,我们与openssl的命令行测试进行有效握手,就像你一样。
我们也可以使sandbox / dev证书正常运行。
如果我们需要进行切换,您能告诉我们您切换到的提供商吗?
感谢。