Я получаю эту ошибку в своем 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 на сервере.
благодаря
Можете ли вы опубликовать PHP-код (push.php), который вы используете для подключения к APN?
Некоторые снимки в темноте:
– Являются ли как сертификат, так и закрытый ключ в этом файле .pem?
– Вы удалили пароль из файла секретного ключа или правильно ли задали его в своем PHP-коде?
– Имеет ли пользователь, выполняющий ваш скрипт, надлежащие разрешения unix для доступа / чтения файла сертификата / ключа?
– Можете ли вы получить доступ к серверу Apple с вашего компьютера? Вы можете протестировать, запустив telnet.
telnet gateway.sandbox.push.apple.com 2195
У меня была эта проблема, и процесс генерации ключей был проблемой, есть две разные команды 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.
У меня тоже была эта пробема. Для меня это работало после удаления явной настройки «шифрования» в параметрах ssl:
$context_options = [ 'ssl' => [ 'local_cert' => ..., 'passphrase' => ..., 'ciphers' => 'DES-CBC3-SHA' ] ]; stream_context_set_option($stream_context, $context_options);
поэтому после удаления строки: 'ciphers' => 'DES-CBC3-SHA' это сработало.