Записи с тегом «curl»

Ошибка CURLE_SSL_CACERT(60) и API ВКонтакте

11.09.2011 21:33 / Артём Волк / 390 просмотров / ...

Обращение к 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, необходимо пристально следить за актуальности набора корневых сертификатов.

Быстрая эмуляция SOAP-запроса под Windows

28.10.2009 22:45 / Артём Волк / 983 просмотра / ...

Иногда нужно быстро выполнить SOAP-запрос не прибегая к какому-либо языку программирвония, например в тестовых целях. С помощью утилиты curl (есть сборка и под Windows) это можно довольно просто сделать:

curl.exe --header "Content-Type:text/xml;charset=utf8" --data "<?xml version='1.0' encoding='UTF-8'?><soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><ns0:checkin xmlns:ns0='http://some_server/'><id>DSFDFDFSDFS</id><current_version></current_version></ns0:checkin></soap:Body></soap:Envelope>" http://example.com/SoapService/