Я использую сертификат, а закрытый ключ
$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);
Он работает на моем локальном сервере XAMPP, но не работает на внешнем сервере:
Предупреждение: stream_socket_client () [function.stream-socket-client]: невозможно подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 (время ожидания подключения) в /home/biranchi/public_html/push.php в строке 42
Не удалось подключить 110
Какая ошибка? Мне нужно изменить некоторые настройки на сервере?
Я исправил проблему, открыв порт 2195 на рабочем сервере. Вы можете проверить, выполнив команду $ telnet gateway.push.apple.com 2195
-bash-3.2# telnet gateway.push.apple.com 2195 Trying 17.149.38.141... Connected to gateway.push.apple.com (17.149.38.141). Escape character is '^]'. Connection closed by foreign host.
Проверьте свои персональные настройки брандмауэра и убедитесь, что вы не блокируете это. Попробуйте отключить брандмауэр.
Кроме того, некоторые API-интерфейсы, такие как запросы, поступают из реального домена, а не из рабочего стола. У меня нет причин полагать, что Apple работает таким образом, но это тоже нужно проверить.
Также убедитесь, что ping gateway.sandbox.push.apple.com и убедитесь, что у вас хорошая связь.
Вы должны установить свой брандмауэр, чтобы разрешить весь блок 17.0.0.0/8 (все это принадлежит Apple!). Проверьте ЭТО ОТВЕТ
И согласно Apple :
Серверы APN используют балансировку нагрузки, поэтому ваши устройства не всегда будут подключаться к одному и тому же общедоступному IP-адресу для уведомлений. Лучше всего разрешить доступ к этим портам во всем блоке адресов 17.0.0.0/8, который назначен Apple.
Если вы используете брандмауэр CSF (например, я), я бы рекомендовал добавить эту строку в файл csf.allow:
tcp|out|d=2195|d=17.0.0.0/8
Использование этого вместо «17.0.0.0/8» позволит использовать только внешние соединения с Apple и, в частности, с портом 2195. NSA не понравится, но это намного точнее и безопаснее! 😉