Как я могу сделать SSL-соединение с PHP - PullRequest
4 голосов
/ 08 июня 2010

Мне нужно разработать класс PHP для связи с серверами Apple, чтобы делать push-уведомления (APNS). У меня есть сертификат (.pem), и я пытался следовать различным учебным пособиям, найденным в Интернете, но все еще получаю сообщение об ошибке при попытке подключиться к ssl: //gateway.sandbox.push.apple.com: 2195 с потоковым сокетом:

$apnsHost = 'gateway.sandbox.push.apple.com';
$apnsPort = 2195;
$apnsCert = 'apns-dev.pem';
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://'.$apnsHost.':'.$apnsPort, $error, $errorString, 2,
STREAM_CLIENT_CONNECT, $streamContext);

Телнет по этому URL работает, поэтому открыт порт 2195. Openssl активируется на PHP, так как я получаю «Зарегистрированные потоковые сокеты: tcp, udp, ssl, sslv3, sslv2, tls» с помощью phpinfo (). Мой сертификат хорошо читается (PHP is_readable (certif.pem) возвращает true в файле)

Что-нибудь еще нужно активировать в Apache или PHP, чтобы заставить его работать?

Ответы [ 3 ]

1 голос
/ 04 августа 2012

Не совсем по теме, но стоит упомянуть:

Для работы SSL с PHP важно две вещи (если вы компилируете PHP из исходного кода)

1) убедитесь, чтопакеты openssl base и devel установлены, например, yum install openssl openssl-devel

2) скомпилируйте PHP с поддержкой openssl: т.е. используйте параметр --with-openssl при запуске config.

Затем,ssl появится в «Зарегистрированных потоковых сокетах» в phpinfo ()

0 голосов
/ 09 июня 2010

Нашли это! Проблема была с сертификатом. Так как я не создавал это сам, я не исследовал это, но я был неправ ...

Я решил восстановить его сам, следуя этим инструкциям: Ошибка при использовании ssl-сертификата с PHP , и он работает!

Спасибо за вашу помощь:)

0 голосов
/ 08 июня 2010

Мой первый комментарий: вы не будете использовать apache. Для взаимодействия с APNS вам нужно будет запустить свой PHP-скрипт как скрипт оболочки (в основном, демон). Вам нужно будет открыть сокетное соединение с сервисами Apple. См. socket_connect() http://www.php.net/manual/en/function.socket-connect.php, чтобы начать.

Помните, что вам нужно держать соединение открытым, что означает, что PHP-скрипт НЕ должен завершаться после одного выполнения, но в основном поддерживает почти бесконечный цикл. На каждой итерации проверяйте изменения, которые нужно нажать, записать в сокет, перевести в спящий режим, повторить.

На сайте разработчиков Apple достаточно информации. Начните здесь http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingWIthAPS/CommunicatingWIthAPS.html#//apple_ref/doc/uid/TP40008194-CH101-SW1

Краткий поиск в Google APNS with PHP дал несколько результатов, один из которых http://code.google.com/p/php-apns/, что выглядит многообещающе.

...