Iphone Push Notification — сервер SSL и push-сертификаты, с MAC и без MAC

Я провел несколько дней, пытаясь получить базовый тест push-уведомлений, но безуспешно. Я получил то же самое, работая на Android через полчаса или около того.

Вещи, которые я пробовал (без Mac).

  1. создать открытый закрытый ключ, используя Linux / OpenSLSL
  2. создать запрос подписи push-сертификата
  3. отправить его в Apple для подписания
  4. загрузите push_certificate от apple и преобразуйте его в .pem, используя закрытый ключ.
  5. создать другую пару секретный / открытый ключ
  6. создать самоподписанный ssl-сертификат для apache2 / php https.

Теперь запутанная часть … в приведенном ниже коде, какой сертификат идет куда?

Мой сервер вообще нуждается в соединении 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 сертификата:

  1. Чтобы включить HTTPS-соединение для Apache2
  2. push_cert.pem скачано и конвертировано из яблока
  3. Корневой сертификат загружен и подписан / экспортирован с entrust.net.

На данный момент я использую только 2 сертификата.

Как и где я должен включить эти сертификаты?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …