По какой-то причине я не могу использовать CURL с HTTPS. Все работало нормально до тех пор, пока я не обновил библиотеки скручиваний. Теперь я испытываю этот ответ при попытке выполнить запросы CURL: проблема с сертификатом SSL CA (путь? Права доступа?)
Следующие предложения, размещенные здесь по смежным вопросам, я попытался сделать следующее:
Отключить проверку хоста и партнера
curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
Включите CURLOPT_SSL_VERIFYPEER
и укажите cacert.pem, загруженный с http://curl.haxx.se/docs/caextract.html.
curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
Я также попытался сделать то же самое с пакетом positiveSSL.ca, который был предоставлен как пакетный сертификат CA для сервера, к которому я пытаюсь подключиться.
Измените настройки php ini с помощью curl.cainfo=cacert.pem
(файл в том же каталоге и доступен для apache)
Переименуйте /etc/pki/nssdb
в /etc/pki/nssdb.old
К сожалению, никто из вышеперечисленных не может решить мою проблему, и я постоянно получаю проблему с сообщением SSL CA (путь? Права доступа?).
И мне не нужна эта проверка в первую очередь (я знаю о проблемах безопасности).
Есть ли у кого-нибудь другие предложения?
ОБНОВИТЬ
После обновления до последних библиотек и перезагрузки всей коробки, теперь не просто apache, который я делал все это сейчас!
Согласно документации: для проверки сертификата хоста или однорангового узла вам необходимо указать альтернативные сертификаты с опцией CURLOPT_CAINFO, или каталог сертификата может быть указан с помощью опции CURLOPT_CAPATH.
Также посмотрите на CURLOPT_SSL_VERIFYHOST: 1, чтобы проверить наличие общего имени в SSL-сертификате. 2, чтобы проверить наличие общего имени, а также убедиться, что он соответствует указанному имени хоста.
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
У нас была та же проблема на машине CentOS7. Отключение VERIFYHOST
VERIFYPEER
не решило проблему, у нас больше не было ошибки cURL, но ответ по-прежнему был недействительным. Выполнение wget
с той же ссылкой, что и cURL, также привело к ошибке сертификата.
-> Наше решение также состояло в том, чтобы перезагрузить VPS, это решило его, и мы снова смогли выполнить запрос.
Для нас это, по-видимому, было проблемой коррупции памяти. Перезагрузка VPS снова перезагрузила библиотеку памяти, и теперь она работает. Поэтому, если указанное выше решение из @clover
не работает, попробуйте перезагрузить компьютер.