Новый Spin на cURL не работает через SSL - PullRequest
1 голос
/ 19 мая 2011

Итак, я нашел много постов здесь и в других местах на веб-сайтах, касающихся PHP, cURL и SSL. У меня есть проблема, которую я не вижу вокруг.

Очевидно, что если я установлю SSL_VERIFYPEER / HOST для слепого принятия, я могу заставить это работать, но я хотел бы использовать свой сертификат для проверки соединения.

Итак, вот код:

        $options = array(
            CURLOPT_URL => $oAuthResult['signed_url'],
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_HEADER => 0,
            CURLOPT_SSL_VERIFYPEER => TRUE,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_CAINFO => getcwd() . '\application\third_party\certs\rootCerr.crt'

        );
        curl_setopt_array($ch, $options);
    try {
        $result = curl_exec($ch);
        $errCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {
            throw new Exception('<strong>Error trying to ExecuteWebRequest, returned: '.$errCode .'<br>URL:'.$url . '<br>POST data (if any):</strong><br>');
        }   

        curl_close($ch);

    } catch (Exception $e) {
        //print the error stuff
    }

Код ошибки, который возвращается 0 ... что означает, что все в порядке ... но так как ничего не возвращается на экран ... Я уверен, что это не работает.

Любой

Ответы [ 2 ]

0 голосов
/ 19 мая 2011

Я реализовал LibCurl Certs, используя CURLOPT_CAINFO, как вы указали ...

Однако, предоставляя имя файла, было недостаточно, ... Он тоже завис на мне.1003 *

Для меня файл был указан по относительному пути ... Кроме того, я должен был убедиться, что сертификат был также в формате Base64.Тогда все прошло без сучка ..

0 голосов
/ 19 мая 2011

Код $ errCode, который вы извлекаете, - это код HTTP, который равен 200-299, когда все в порядке.Получение 0 означает, что оно никогда не было установлено из-за проблемы или чего-то подобного.

Вы должны использовать curl_errno () после curl_exec (), чтобы выяснить, все ли в порядке или нет.(Вы не можете проверить код возврата curl_exec () на наличие ошибок так же легко, так как у вас включена функция CURLOPT_RETURNTRANSFER, которая заставляет эту функцию вместо этого возвращать содержимое передачи, для которой она установлена.быть хорошим индикатором того, что что-то не получилось.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...