PHP CURL CURLOPT_SSL_VERIFYPEER ігнорується


117

Чомусь я не в змозі використовувати CURL з HTTPS. Все працювало чудово, поки я не запустив оновлення бібліотек curl. Тепер я відчуваю цю відповідь під час спроби виконати запити 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");
  • Я також намагався зробити те ж саме з позитивним пакетомSSSS.ca, який був наданий як сертифікат пакета CA для сервера, до якого я намагаюся підключитися.

  • Відредагуйте параметри php ini за допомогою curl.cainfo=cacert.pem(файл у тій самій каталозі та доступний апаш)

  • Перейменувати /etc/pki/nssdbна/etc/pki/nssdb.old

На жаль, жодне з перерахованого вище не в змозі вирішити мою проблему, і я постійно отримую Проблема з сертифікатом Cert SSL (шлях? Права доступу?).

І ця перевірка мені в першу чергу не потрібна (я знаю проблеми безпеки).

Хтось має якісь пропозиції?

ОНОВЛЕННЯ

Після оновлення до останніх бібліотек та перезавантаження цілої скриньки, а не лише apache, який я робив, все, здається, працює знову знову !!!


1
Чи оновлюється бібліотека Curl, складена проти іншого стека SSL (можливо, GnuTLS проти OpenSSL)?
Бруно

Я б не вважав цього. Система є Fedora 16, і справді це було справою оновлення yum. Найбільше дратує те, що мені не потрібно / хочу всю цю перевірку, і я, здається, не можу її просто відключити.
Грег

Якщо ви прагнете використовувати HTTPS для безпеки, вам завжди захочеться мати цей процес перевірки.
Бруно

Я знаю це, однак мій випадок використання тут робить це все зайвим. Також я оновив curl до найновіших доступних та php до 5.4. Тепер повідомлення про помилку відсутнє, але я не отримую жодного костена від завитка :)
Грег,

Так, тепер я отримую десь функцію curl_errno, повідомляє про стан 77, який відповідно до посібника є CURLE_SSL_CACERT_BADFILE.
Грег

Відповіді:


240

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

Подивіться також CURLOPT_SSL_VERIFYHOST:

  • 1, щоб перевірити наявність загального імені в сертифікаті однорангових SSL.
  • 2, щоб перевірити наявність загального імені, а також перевірити, чи відповідає воно вказаному імені хоста.

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

5
Якщо вимкнути перевірку SSL, то в значній мірі знімається вся безпека SSL. Ви повинні замінити конфігурацію PHP.
Scopey

7
@Scopey, але іноді це може знадобитися в місцевих середовищах розробки з власними підписами сертифікатів. Тому, мабуть, це не має сенсу в непублічних середовищах, але як нагадування, завжди краще мати попередження у журналі (наприклад SSL verification disabled)
Іван Борщов

2

У нас була така ж проблема на апараті CentOS7. Вимкнення проблеми VERIFYHOST VERIFYPEERне вирішило проблему, ми вже не мали помилки CURL, але відповідь все-таки була недійсною. Перехід wgetна те саме посилання, що і cURL, також призвів до помилки сертифіката.

-> Нашим рішенням було також перезавантажити VPS, це вирішило це, і ми змогли виконати запит ще раз.

Для нас це здавалося проблемою з корупцією пам’яті. Перезавантаження VPS знову завантажила бібліотеку в пам'ять і тепер вона працює. Тож якщо вищезгадане рішення @cloverне працює, спробуйте перезавантажити машину.


Переконайтесь, що це не переривчасте. У мене виникла проблема з paypal та одноранкою, де іноді це працювало, іноді - не. Це здавалося випадковим. Явно налаштовуйте шлях до файлу і повідомляйте завиток, де було вирішено проблему.
Ніл Девіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.