Записи с тегом «SSL»
Ошибка CURLE_SSL_CACERT(60) и API ВКонтакте
Обращение к API ВКонтакте требует осуществления запросов по протоколу HTTPS. Для первых тестов все проверки можно легко отключить:
$ch = curl_init(); curl_setopt_array($ch, array( CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_SSL_VERIFYHOST => FALSE, ));
Но в рабочем приложении хотелось бы использовать соединения со всеми проверками. Если их включить, возникнет ошибка с номером 60 (CURLE_SSL_CACERT). Причина этой ошибки в том, что у cURL'а, в отличие от браузеров, нет набора корневых сертификатов, поэтому проверить подлинность сервера, к которому осуществляется соединение он не может (подробнее о работе с SSL сертификатами в cURL можно прочитать здесь).
У Facebook для решения этой проблемы в комплекте с PHP SDK есть файл с цепочкой сертификатов, который указывается с помощью параметра CURLOPT_CAINFO:
curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/fb_ca_chain_bundle.crt');
В теории, сгенерировать такую цепочку несложно прямо из Firefox, но у меня она почему-то не заработала. Другой способ решения проблемы — скачать копию корневых сертификатов от Mozilla Firefox в понятном для cURL формате и указать путь к файлу в параметре CURLOPT_CAINFO.
Минус решения — как показал пример истории с DigiNotar, необходимо пристально следить за актуальности набора корневых сертификатов.
