Я использую XAMPP для разработки. Недавно я обновил установку xampp со старой версии до 1.7.3.
Теперь, когда я скручиваю сайты с поддержкой HTTPS, я получаю следующее исключение
Неустранимая ошибка: необработанное исключение «RequestCore_Exception» с сообщением «cURL resource: Resource id # 55; Ошибка cURL: проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Сведения: ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата (60) '
Все предлагают использовать некоторые конкретные параметры curl из кода PHP, чтобы решить эту проблему. Я думаю, что это не должно быть так. Потому что у меня не было никаких проблем с моей старой версией XAMPP, и это произошло только после установки новой версии.
Мне нужна помощь, чтобы выяснить, какие настройки меняются в моей установке PHP, Apache и т.д. могут решить эту проблему.
CURLOPT_SSL_VERIFYPEER
-> false). Вы либо добавляете сертификат CA сайта, с которым вы пытаетесь использовать SSL, либо отключаете проверку CA. Это только два доступных варианта.CURLOPT_SSL_VERIFYPEER
дляfalse
поражения цели использования SSL.Это довольно распространенная проблема в Windows. Вам нужно просто установить
cacert.pem
наcurl.cainfo
.Начиная с PHP 5.3.7 вы можете делать:
php.ini
- добавить curl.cainfo = "PATH_TO / cacert.pem"В противном случае вам нужно будет сделать следующее для каждого ресурса cURL:
источник
2.
, вы должны добавить переменную в два отдельныхphp.ini
файла. См. Stackoverflow.com/a/25706713/1101095Предупреждение: это может привести к проблемам безопасности, от которых защищен протокол SSL, что делает вашу кодовую базу небезопасной. Это противоречит любой рекомендуемой практике.
Но действительно простым решением, которое сработало для меня, было позвонить:
перед звонком:
в файле php.
Я считаю, что это отключает все проверки SSL-сертификатов.
источник
Источник: http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html
для всех вышеупомянутых информационных кредитов. Идет по адресу : http://ademar.name/blog/2006/04/curl-ssl-certificate-problem-v.html.
источник
Вышеуказанные решения хороши, но если вы используете WampServer, вы можете обнаружить, что установка
curl.cainfo
переменнойphp.ini
не работает.В конце концов я обнаружил, что WampServer имеет два
php.ini
файла:Первый, по-видимому, используется, когда файлы PHP вызываются через веб-браузер, а второй используется, когда команда вызывается из командной строки или
shell_exec()
.TL; DR
Если вы используете WampServer, вы должны добавить
curl.cainfo
строку в обаphp.ini
файла.источник
Ради любви всего святого ...
В моем случае мне пришлось установить
openssl.cafile
переменную PHP config в путь к файлу PEM.Я верю, что это очень верно, что есть много систем, где настройка
curl.cainfo
в конфиге PHP - это именно то, что нужно, но в среде, с которой я работаю, то есть eboraas / laravel докера , который использует Debian 8 (jessie) и PHP 5.6, установка этой переменной не сработала.Я заметил, что в выводе
php -i
ничего не упоминалось об этом конкретном параметре конфигурации, но в нем было несколько строкopenssl
. Существует как опция, такopenssl.capath
иopenssl.cafile
опция, но только установка второй позволила curl через PHP, наконец, быть в порядке с HTTPS URL.источник
Иногда, если приложение, с которым вы пытаетесь связаться, имеет самозаверяющие сертификаты, обычный cacert.pem с http://curl.haxx.se/ca/cacert.pem не решает проблему.
Если вы уверены в URL-адресе конечной точки службы, нажмите его через браузер, сохраните сертификат вручную в формате «Сертификат X 509 с цепочкой (PEM)». Укажите этот файл сертификата с помощью
источник
У меня такая же ошибка на Amazon AMI Linux.
Я решил, установив curl.cainfo в /etc/php.d/curl.ini
https://gist.github.com/reinaldomendes/97fb2ce8a606ec813c4b
Дополнение октябрь 2018
На Amazon Linux v1 отредактируйте этот файл
Добавить эту строку
источник
При настройке параметров curl для CURLOPT_CAINFO, пожалуйста, не забудьте использовать одинарные кавычки, использование двойных кавычек приведет только к другой ошибке. Так что ваш вариант должен выглядеть так:
Кроме того, в вашем файле php.ini настройки должны быть записаны как: (обратите внимание на мои двойные кавычки)
Я помещаю это непосредственно ниже линии, которая говорит это:
extension=php_curl.dll
(Только для целей организации вы можете поместить его в любое место внутри вашего приложения
php.ini
, я просто поместил его рядом с другой ссылкой на curl, поэтому при поиске по ключевому слову curl я могу найти обе ссылки curl в одной области.)источник
Я попал сюда, когда пытался заставить GuzzleHttp (php + apache на Mac) получить страницу с www.googleapis.com.
Вот мое окончательное решение на случай, если оно кому-нибудь поможет.
Посмотрите на цепочку сертификатов для любого домена, который дает вам эту ошибку. Для меня это был googleapis.com
Вы получите что-то вроде этого:
Примечание: я зафиксировал это после того, как исправил проблему, чтобы вывод вашей цепочки мог выглядеть иначе.
Затем вам нужно посмотреть сертификаты, разрешенные в php. Запустите phpinfo () на странице.
Затем найдите файл сертификата, который загружен со страницы вывода:
Это файл, который вам нужно исправить, добавив в него правильные сертификаты.
В основном вам необходимо добавить правильные «подписи» сертификатов в конец этого файла.
Вы можете найти некоторые из них здесь: Вам может понадобиться поискать в Google / поиск других в цепочке, если они вам нужны.
Они выглядят так:
( Примечание: это изображение, поэтому люди не будут просто копировать / вставлять сертификаты из stackoverflow )
Как только нужные сертификаты будут в этом файле, перезапустите apache и протестируйте.
источник
Вы можете попытаться переустановить
ca-certificates
пакет или явно разрешить соответствующий сертификат, как описано здесь .источник
Решение очень простое! Поместите эту строку перед
curl_exec
:Для меня это работает.
источник