Ошибка APN в серверном скрипте

Я получаю эту ошибку в своем php-скрипте при отправке данных полезной нагрузки.

Warning: stream_socket_client() [function.stream-socket-client]:
Unable to set private key file `/Applications/XAMPP/xamppfiles/htdocs/test/apn/apns-dev.pem'
in /Applications/XAMPP/xamppfiles/htdocs/test/apn/push.php on line 42

Warning: stream_socket_client() [function.stream-socket-client]:
failed to create an SSL handle
in /Applications/XAMPP/xamppfiles/htdocs/test/apn/push.php on line 42

Warning: stream_socket_client() [function.stream-socket-client]:
Failed to enable crypto
in /Applications/XAMPP/xamppfiles/htdocs/test/apn/push.php on line 42

Warning: stream_socket_client() [function.stream-socket-client]:
unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error)
in /Applications/XAMPP/xamppfiles/htdocs/test/apn/push.php on line 42

Какова причина ? Нужно ли менять какие-либо настройки? Я также установил файл .pem на сервер.

Спасибо


person Biranchi    schedule 19.11.2009    source источник


Ответы (3)


Можете ли вы опубликовать код PHP (push.php), который вы используете для подключения к APN?

Несколько снимков в темноте:
– И сертификат, и закрытый ключ находятся в одном файле .pem?
– Вы удалили пароль из файла закрытого ключа или правильно установили его в своем PHP code?
 – Есть ли у пользователя, запускающего ваш скрипт, необходимые разрешения unix для доступа/чтения файла сертификата/ключа?
 – Можете ли вы получить доступ к серверу Apple с вашего компьютера? Вы можете проверить, запустив telnet.

telnet gateway.sandbox.push.apple.com 2195
person Sangraal    schedule 20.11.2009
comment
я пробовал telnet gateway.sandbox.push.apple.com 2195, он продолжает закрываться внешним хостом. - person Rakib; 04.08.2012

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

openssl pkcs12 -clcerts -nokeys -out aps-dev-cert.pem -in aps-dev-cert.p12
openssl pkcs12 -nocerts -out aps-dev-key.pem -in aps-dev-key.p12
openssl rsa -in aps-dev-key.pem -out aps-dev-key.unencrypted.pem
cat aps-dev-cert.pem aps-dev-key.unencrypted.pem > aps-dev.pem

Обратите внимание на разницу в первых двух командах openssl.

person Ali Nadalizadeh    schedule 04.09.2010

У меня тоже была эта пробема. Для меня это сработало после удаления явной настройки «шифра» в параметрах ssl:

$context_options = [ 
    'ssl' => [ 
        'local_cert' => ..., 
        'passphrase' => ..., 
        'ciphers' => 'DES-CBC3-SHA'
    ] 
]; 
stream_context_set_option($stream_context, $context_options);

поэтому после удаления строки: «шифры» => «DES-CBC3-SHA» это сработало.

person Riesling    schedule 26.03.2015