Я новичок в php, и я получаю эту ошибку, пытаясь загрузить сертификат
jameys-macbookpro41:~ user$ php -f ~/Sites/providerService.php
Предупреждение: stream_socket_client (): невозможно установить локальный файл цепочки сертификатов `cert.pem '; Убедитесь, что ваши настройки cafile / capath содержат сведения о вашем сертификате и его эмитенте в /Users/jamey/Sites/providerService.php в строке 27
cert.pem находится в той же папке, что и файл php. файл cert.pem был создан в инструменте Apple keychain
class pushNotifications { ... private $sslPem = 'cert.pem'; ... function connectToAPNS(){ $streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', $this->sslPem);
Спасибо за любую помощь!
Вы получаете сообщение об ошибке, потому что он пытается найти ваш файл cert.pem в каталоге, в котором выполняется скрипт, а не в каталоге, в котором находится скрипт. В вашем примере это ваш каталог пользователя «~».
Попробуйте изменить свой класс на это или что-то подобное:
class pushNotifications { ... private $sslPem = 'cert.pem'; ... function connectToAPNS(){ $streamContext = stream_context_create(); stream_context_set_option($streamContext, 'ssl', 'local_cert', dirname(__FILE__) . '/' . $this->sslPem);
У меня тоже была эта проблема, оказалось, что по какой-то причине мой закрытый ключ не соответствовал тому, который был связан с aps_developer_identity.cer, который у меня был …
Я закончил тем, что очистил все свои общедоступные и закрытые ключи от моего элемента логина «login», затем снова начал весь процесс (сгенерировал запрос) … Я отправил новый файл запроса на портал программы и сгенерировал новый сертификат , загрузить и установить его, дважды щелкнув по нему (developer_IDity.cer). Затем я сбрасываю профили подготовки, чтобы использовать новые сертификаты Push SSL, загружал их и устанавливал их двойным щелчком (aps_developer_identity.cer). Наконец, я перезагружаю профиль подготовки и загружаю новый. Я очистил старый в Xcode Organizer и установил новый. Наконец, я экспортировал свой «закрытый» ключ как key.p12 и aps_developer_identity.cer apsdi.p12 и выполнил следующие команды против них:
openssl pkcs12 -clcerts -nokeys -out apsdi.pem -in apsdi.p12 openssl pkcs12 -nocerts -out key.pem -in key.p12
Если вы согласны с использованием парольной фразы (рекомендуется для производства):
cat apsdi.pem key.pem > cert.pem
Если вы хотите использовать «пустую» кодовую фразу, вам нужно сначала дешифровать свой закрытый ключ, используя пароль, который вы указали при преобразовании его в формат pem :
openssl rsa -in key.pem -out key.unencrypted.pem
И затем кота cert и незашифрованный ключ в apns.pem (или любое другое имя файла, которое вы выбрали):
cat apsdi.pem key.unencrypted.pem > apns.pem
Очень важно, чтобы вы экспортировали сертификат aps_developer_identity, а не сертификат разработчика в apsdi.pem.
Если вы можете расширять записи developer_identity.cer и aps_developer_identity.cer в Keychain Access, и вы видите «закрытый» ключ, когда вы это делаете, все должно работать.
В качестве дополнительного совета для тех, кто имеет одну и ту же проблему: при экспорте закрытого ключа из доступа к цепочке ключей Apple и конвертации в .pem, УКАЗАТЬ ПАРОЛЬ.
По какой-то причине кажется, что оставляя пустой пароль в одном из экспорта, удаляет закрытый ключ, поэтому окончательный .pem не завершен.
Поэтому поставьте фиктивный пароль, даже если позже вы удалите его с помощью openssl.
Заметки на будущее (после большой боли в голове из-за всего этого): 1. если вы получите ошибку рукопожатия – созданный вами файл pem, вероятно, неверен.
а. убедитесь, что файл находится в том же каталоге, что и php, который вы пытаетесь запустить. б. экспортируйте файл certifcate p12 И ключ под ним в утилите доступа к keychain. Оба из этих файлов будут одинакового размера, но они различны. с. выполните указанные выше команды «openssl» на терминале macintosh.
Кстати, сообщение «Не удалось включить крипто» исчезнет, когда система работает правильно.
Просто измените владельца на www-data. Он будет работать 🙂
sudo chown www-data.www-data ck.pem
deafult пользователь apache www-data