相关疑难解决方法(0)

stream_socket_client无法连接(连接超时)

我正在使用证书和私钥

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $certfile);
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
$fp = stream_socket_client('ssl://gateway.xyz.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
Run Code Online (Sandbox Code Playgroud)

它在我的本地XAMPP服务器上运行,但它不能在外部服务器上运行:

警告:stream_socket_client()[function.stream-socket-client]:无法连接到/home/biranchi/public_html/push.php中的ssl://gateway.sandbox.push.apple.com:2195(连接超时)在第42行

无法连接110

错误是什么?我是否需要更改服务器中的某些设置?

php sockets stream ssl-certificate

12
推荐指数
2
解决办法
5万
查看次数

APNS服务器的IP地址范围?

有没有人拥有Apple推送通知服务使用的所有IP地址的完整列表?

我知道Apple使用内容分发网络来分发这些请求,DNS查找将返回靠近请求者位置的服务器 - 我遇到的问题是找到处理美国内容的所有这些服务器.

例如:

$ nslookup gateway.push.apple.com

Non-authoritative answer:
canonical name = gateway.push-apple.com.akadns.net.

Address: 17.172.238.216
Address: 17.172.238.224
Address: 17.172.238.226
Run Code Online (Sandbox Code Playgroud)

等等

每次查询DNS时此列表都会更改 - 但所有地址似乎都在17.172.238.x范围内 - 但不能保证明天或下周我会看到不同的范围.

但是,对于测试推送服务器,我已经在不同的子网中获得了结果.有时我得到一组地址:

$ nslookup gateway.sandbox.push.apple.com

Non-authoritative answer:
canonical name = gateway.sandbox.push-apple.com.akadns.net.

Address: 17.149.34.66
Address: 17.149.34.65
Run Code Online (Sandbox Code Playgroud)

还有其他时候,我会得到这些地址:

Address: 17.172.233.65
Address: 17.172.233.66
Run Code Online (Sandbox Code Playgroud)

我将使用Apple推送通知服务的服务器将在公司防火墙后面,我需要为生产和测试网关打开端口2195和2196 - 但是,我的防火墙团队需要特定的IP地址而不是主机名.

我担心如果我只是要求防火墙团队允许我到目前为止看到的IP地址,那么当DNS服务器决定提供不同的范围时,我的服务器将在一天或一周后停止工作.

如果有人有生产和测试环境的综合列表,我会很感激.

更新: 我试过要求防火墙团队打开Apple的整个IP块(17.0.0.0/8),但他们不会这样做 - 我需要缩小地址范围.

最后更新 - 2016年10月16日

即使这个问题已经结束,我想我会添加一个解释我最终解决方案的说明 - 并不是任何寻找答案的人都想听到的.我永远无法超越CDN使用的不断变化的地址,所以我最终放弃并从Rackspace租用了一台外部服务器.我得到了最小的服务器,唯一运行它的是一个端口转发器,它监听2195和2916并将连接发送给Apple.

我在Rackspace服务器上使用了一个简单的iptables配置,只允许从我的公司网关连接2195/2916,然后让我的防火墙团队打开一条通往外部服务器上静态IP地址的路径.防火墙团队很高兴,实现了单一路径,外部服务器可以连接到Apple使用的整个17.0.0.0/8范围.

apple-push-notifications

8
推荐指数
2
解决办法
6万
查看次数

与Django的APNS问题

我正在使用以下项目在我的项目中启用APNS:

https://github.com/stephenmuss/django-ios-notifications

我可以在我的生产应用程序上发送和接收推送通知,但是沙箱apns有一些我无法解决的奇怪问题.它始终没有连接到推送服务.当我手动做_connect()APNService或者FeedbackService班,我得到以下错误:

  File "/Users/MyUser/git/prod/django/ios_notifications/models.py", line 56, in _connect
    self.connection.do_handshake()
Error: [('SSL routines', 'SSL3_READ_BYTES', 'sslv3 alert handshake failure')]
Run Code Online (Sandbox Code Playgroud)

我尝试多次重新创建APN证书并不断获得相同的错误.还有什么我想念的吗?

我使用端点gateway.push.apple.comgateway.sandbox.push.apple.com连接到服务.还有什么我应该考虑的吗?我看过以下内容:

Apns php错误"无法连接到APNS:110连接超时."

使用OpenSSL将PKCS#12证书转换为PEM

使用PHP for iPhone APNS时出错

django apple-push-notifications

3
推荐指数
1
解决办法
2464
查看次数