Я пытаюсь написать PHP script, используя cURL, который может авторизовать пользователя через страницу, использующую SSL-сертификат, в дополнение к имени пользователя и паролю, и я не могу пройти этап SSL-сертификации.
В этом случае curl_setopt($handle, CURLOPT_VERIFYPEER, 0)
, к сожалению, не вариант. Сертификат является обязательной частью аутентификации, в противном случае я получаю ошибку, упомянутую в этой другой аналогичной должности SO.
Я пробовал несколько запусков командной строки cURL:
> curl --url https://website
Это возвращает ошибку (60) SLL certificate problem
. Если я отредактирую команду для включения опции --cacert
:
> curl --url https://website --cacert /path/to/servercert.cer
Это прекрасно работает; возвращается веб-сайт auth.
Однако, я пробовал следующий PHP-код:
$handle = curl_init();
$options = array(
CURLOPT_RETURNTRANSFER => false,
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_SSL_VERIFYHOST => '0',
CURLOPT_SSL_VERIFYPEER => '1',
CURLOPT_CAINFO => '/path/to/servercert.cer',
CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)',
CURLOPT_VERBOSE => true,
CURLOPT_URL => 'https://website'
);
curl_setopt_array($handle, $options);
curl_exec($handle);
if (curl_errno($handle)) {
echo 'Error: ' . curl_error($handle);
}
curl_close($handle);
Я бы подумал, что код по существу аналогичен командам оболочки, но вместо этого меня встречает следующее сообщение об ошибке:
Ошибка: подтверждение проверки сертификата: CAfile:/path/to/servercert.cer CApath: none
Я прочитал всю литературу, которую я могу найти (особенно на php.net и curl.haxx), и не может найти ничего, что устраняет эту проблему. Любые предложения?
EDIT: Я пробовал chmod 777 servercert.cer
без успеха. Однако при выполнении PHP скрипт с приведенным выше кодом из командной строки вместо браузера через php test.php
он отлично работает. Любое объяснение того, почему он не работает в браузере?
РЕДАКТИРОВАТЬ 2. Эти провалы на всех душах, достаточно храбрых, чтобы ответить на этот вопрос, стареют. Либо сделайте что-нибудь значимое, либо передайте, пожалуйста.