Еще раз, еще один вопрос относительно cURL и SSL, поскольку я не могу найти соответствующие ответы на мою проблему.
У меня работает SSL на моем веб-сервере, с доверенным сертификатом и зелеными знаками в адресной строке браузера, а не сам. Так хорошо до сих пор.
Теперь я хочу общаться с cURL и использовать следующую функцию (данные POST еще не добавлены):
function ssltest(){
$post_data = '';
$url = 'https://myserver/test.php';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
//curl_setopt($ch, CURLOPT_CAINFO, 'sslstuff/cacert.pem');
curl_setopt($ch, CURLOPT_CAINFO, 'sslstuff/false.pem');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
echo ssltest();
Как cacert.pem я использую этот, который я нашел в своем браузере, который, очевидно, идентичен тому, что я нашел здесь http://curl.haxx.se/ca/cacert.pem В приведенном выше коде есть ложный.pem, котор нужно увидеть. Что теперь? Если этот файл пуст, на сервере нет ответа, но я тестировал его, чтобы вставить сертификат из другого предприятия из списка на curl.haxx.se. Я получаю тот же правильный ответ от сервера в качестве результата, как при правильном использовании. PEM
Какая проблема? Что мне не хватает?
"нет ответа от сервера"
Я думаю, что это очень маловероятно. Я подозреваю, что HTTP-ответ от сервера отсутствует, но согласование SSL не работает, но в вашем коде нет ошибок. Если $ output === false, посмотрите на curl_error().
Возможно, вам захочется поиграть с VERIFYHOST и VERIFYPEER, чтобы точно определить причину проблемы.