факты
У меня на ноутбуке 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 Это не универсальное решение, я хочу настроить свои сертификаты таким образом, чтобы мне не приходилось загружать разные сертификаты для разных сайтов.
Спасибо
Текущие сертификаты 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 и затем правильно проверить сайт.
Самый простой способ — пропустить эту проверку.
...
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_exec($curl);