Я провел несколько дней, пытаясь получить базовый тест push-уведомлений, но безуспешно. Я получил то же самое, работая на Android через полчаса или около того.
Вещи, которые я пробовал (без Mac).
Теперь запутанная часть … в приведенном ниже коде, какой сертификат идет куда?
Мой сервер вообще нуждается в соединении HTTPS вообще? Может ли это быть самоподписанным.
Моя простая демонстрация выглядит так (с некоторыми переменными, вырезанными для простоты):
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'passphrase', 'my_appache2_pass');
stream_context_set_option($ctx, "ssl", "local_cert", '/etc/apache2/ssl/mywebsite.com.pem');
stream_context_set_option($ctx, "ssl", "allow_self_signed", true);
stream_context_set_option($ctx, "ssl", "verify_peer", true);
stream_context_set_option($ctx, "ssl", "cafile", '/etc/apache2/ssl/Entrust.net-Certification-Authority-2048.pem');
$fp = stream_socket_client("tls://gateway.sandbox.push.apple.com:2195", $errno, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
//errors i keep getting
[Sat Oct 03 21:00:46.852453 2015] [:error] [pid 17460] [client 217.159.180.56:52870] PHP Warning: stream_socket_client(): SSL: Connection reset by peer in /var/www/html/ezleads_api/ApnsPHP/test.php on line 28
OR
[Sat Oct 03 21:01:36.033972 2015] [:error] [pid 17467] [client 217.159.180.56:52877] PHP Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /var/www/html/ezleads_api/ApnsPHP/test.php on line 28
[Sat Oct 03 21:01:36.034157 2015] [:error] [pid 17467] [client 217.159.180.56:52877] PHP Warning: stream_socket_client(): Failed to enable crypto in /var/www/html/ezleads_api/ApnsPHP/test.php on line 28
[Sat Oct 03 21:01:36.034398 2015] [:error] [pid 17467] [client 217.159.180.56:52877] PHP Warning: stream_socket_client(): unable to connect to tls://gateway.sandbox.push.apple.com:2195 (Unknown error) in /var/www/html/ezleads_api/ApnsPHP/test.php on line 28
Итак, всего у меня 3 сертификата:
push_cert.pem
скачано и конвертировано из яблока На данный момент я использую только 2 сертификата.
Как и где я должен включить эти сертификаты?
Задача ещё не решена.
Других решений пока нет …