2009-10-28 3 views
8

Я выполнил инструкции по адресу How to build an Apple Push Notification provider server (tutorial) в попытке настроить сервер уведомлений на push.Служба уведомлений Apple Push: сторона сертификата устанавливает сервер?

При попытке подключиться с помощью следующего кода PHP

// connect to apns server 
$strAPNSUrl = 'ssl://gateway.sandbox.push.apple.com:2195'; 
$strAPNSCert = 'dev.pem'; 

// generate stream 
$oStreamContext = stream_context_create(); 
stream_context_set_option($oStreamContext, 'ssl', 'local_cert', $strAPNSCert); 

// create the socket connection 
$oAPNS = stream_socket_client($strAPNSUrl, $iError, $strError, 2, STREAM_CLIENT_CONNECT, $oStreamContext); 

я получаю следующее предупреждение

Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert

Основываясь на том, что информация, которую я был в состоянии найти на Google, то вопрос, похоже, мой сертификат.

Я генерирую свои файлы csr и pem в OS X (файлы pem в соответствии с инструкциями в учебнике). Как только я создал dev.pem, я загружаю его на хостинг-провайдера и пытаюсь запустить свой php-скрипт. Правильно ли это создать и «установить» сертификат?

У меня закончились идеи отладки. Любое направление было бы здорово.

ответ

8

На мой сервер был неверным Путь в dev.pem.

Инструкции действительно являются правильным способом создания файла .pem. После создания его можно использовать на любом компьютере (а не только на машине, которая сгенерировала его).

+0

У вас возникли проблемы с Absolute и Relative paths? –

+0

Я ошибся с именем файла моего live-файла .pem. -Просмотрел, пока я не увидел этот ответ, и это заставило меня «внимательно» взглянуть на него. – James

1

Вы могли использовать тот же самый .pem-файл на своем сервере? И как вы сказали ... на любой машине.

Я следую этому руководству, и я мог отправлять сообщения с моей машины (один из них был сгенерирован), но я попытался скопировать все файлы и запустить сценарий на другом компьютере, и у меня есть те же ошибки, которые у вас есть получил.

Как вы это сделали, чтобы заставить его работать на другом компьютере? Установили ли вы файл .pem? Любая специальная конфигурация?

Cheers

+0

Что касается «установки» файла .pem, все, что мне нужно было сделать, это скопировать его в локальный каталог на моем сервере. Проблема заключалась в том, что я переместил свой PHP-скрипт в каталог cron, где хранятся мои задания cron, и не удалось скопировать файл .pem. Как только я переместил файл .pem, все было хорошо. Мой хостинг-провайдер работает под Linux, поэтому файл .pem должен быть хорошим для любой платформы. –

+0

Разрешения для файлов потенциально могут быть проблемой. Мой .pem установлен в 644. –

+0

@Jason George Я изменил разрешения на файл, но ошибка не изменилась. Я сделал почти то же самое, что вы сказали. Я настроил свою машину, протестировал и все работает. Итак, я попытался скопировать все и поставить в другой Mac, который у меня есть, но на этой машине я получаю эту ошибку. – vfn