Подтвердить что ты не робот

Php curl: опция SSL_VERIFYPEER не действует

У меня есть этот кусок кода для запуска запросов с помощью curl:

function curl_query($full_url, $username, $password, $payload) {
    $additionalHeaders = "";
    $process = curl_init($full_url);
    curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded', $additionalHeaders));
    curl_setopt($process, CURLOPT_HEADER, 0);
    curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
    curl_setopt($process, CURLOPT_TIMEOUT, 30);
    curl_setopt($process, CURLOPT_POST, 1);
    curl_setopt($process, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($process, CURLOPT_MAXREDIRS, 4);
    curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($process, CURLOPT_SSL_VERIFYPEER, FALSE);
    $return = curl_exec($process);
    if ($return === false) {
        error_log("CURL error ".curl_error($process));
    }
    return $return;
}

Параметр CURLOPT_SSL_VERIFYPEER имеет значение false, поэтому я могу читать страницы с самозаверяющими сертификатами. Однако, когда я выполняю этот код с URL-адресом https, я получаю сообщение об ошибке:

CURL error SSL: certificate subject name 'localhost' does not match target host name '192.168.1.1',

Я запускаю этот код на сервере CentOS 5 с установленным пакетом php53.

Заранее спасибо

4b9b3361

Ответ 1

Добавьте опцию CURLOPT_SSL_VERIFYHOST

curl_setopt($process, CURLOPT_SSL_VERIFYHOST, FALSE);

Я понял, что в английской версии документации PHP отсутствует эта важная информация:

(перевод с немецкой версии руководства по PHP)

CURLOPT_SSL_VERIFYHOST должен быть установлен в true или false, если CURLOPT_SSL_VERIFYPEER был деактивирован.