Подтвердить что ты не робот

PHP CURL CURLOPT_SSL_VERIFYPEER игнорируется

По какой-то причине я не могу использовать 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

К сожалению, ни одно из вышеперечисленных способов не может решить мою проблему, и я постоянно получаю проблему с сообщением сертификата CA CA (путь? права доступа?).

И мне не нужна эта проверка в первую очередь (я знаю о проблемах безопасности).

Есть ли у кого-нибудь другие предложения?

UPDATE

После обновления до последних библиотек и повторного запуска всего окна, а не просто apache, который я делал все это, похоже, снова работает!

4b9b3361

Ответ 1

В соответствии с документацией: для проверки сертификата хоста или однорангового узла вам необходимо указать альтернативные сертификаты с параметром CURLOPT_CAINFO или каталог сертификата можно указать с помощью опции CURLOPT_CAPATH.

Также посмотрите на CURLOPT_SSL_VERIFYHOST: 1, чтобы проверить наличие общего имени в SSL-сертификате. 2, чтобы проверить наличие общего имени, а также убедиться, что он соответствует предоставленному имени хоста.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

Ответ 2

У нас была такая же проблема на машине CentOS7. Отключение VERIFYHOST VERIFYPEER не решило проблему, у нас больше не было ошибки cURL, но ответ по-прежнему был недействительным. Выполнение wget по той же ссылке, что и cURL, также привело к ошибке сертификата.

- > Наше решение также состояло в том, чтобы перезагрузить VPS, это решило его, и мы снова смогли выполнить запрос.

Для нас это представляло собой проблему с коррупцией памяти. Перезагрузка VPS снова перезагрузила библиотеку памяти, и теперь она работает. Поэтому, если указанное выше решение из @clover не работает, попробуйте перезагрузить компьютер.