Ошибка сертификата SSL в cURL

факты

У меня на ноутбуке Win 10 Apache / 2.4.27 (Win64) PHP / 7.2.0beta3. Я хочу реализовать CURL. Это мой код

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://www.youtube.com');
curl_exec($curl);

if (curl_errno ( $curl )) {
echo curl_error ( $curl );
curl_close ( $curl );
}

что генерирует ошибку SSL certificate problem: unable to get local issuer certificate, Поэтому я скачал сертификаты с https://curl.haxx.se/ca/cacert.pem. Взял файл cacert.pem, поместил его в папку PHP и отредактировал php.ini файл как это
curl.cainfo = C:php/ext/cacert.pem,

проблема

Теперь я получаю эту ошибку error setting certificate verify locations: CAfile: C:php/ext/cacert.pem CApath: none, Я погуглил, и единственное решение, которое я нашел, это то, что мне нужно скачать .crt файл с сайта, который я хочу cURL и включить его в мой CURL, как curl_setopt($curl, CURLOPT_CAINFO, "C:/wamp64/www/GIAG2.crt");,

Проблема 1.1 :
Я не знаю как скачать .crt файл, чтобы я мог включить его в свой код, как в примере выше.

Задача 1.2 Это не универсальное решение, я хочу настроить свои сертификаты таким образом, чтобы мне не приходилось загружать разные сертификаты для разных сайтов.

Спасибо

2

Решение

Текущие сертификаты CA Cert предоставлены завивать содержит центр сертификации GeoTrust Global CA, который подписал сертификат CA Google, который, в свою очередь, подписывает сертификат YouTube, поэтому у вас не должно возникнуть проблем с использованием имеющегося у вас файла.

Исходя из последней ошибки, похоже, что проблема в том, что вы пропустили / после C:, Сообщение error setting certificate verify locations означает, что он не может открыть или прочитать файл, указанный curl.cainfo поэтому он не находит никаких сертификатов вообще.

Если вы измените C:php/ext/cacert.pem в C:/php/ext/cacert.pem он должен быть в состоянии правильно прочитать файл CA и затем правильно проверить сайт.

1

Другие решения

Самый простой способ — пропустить эту проверку.

...
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_exec($curl);
-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector