Еще раз, еще один вопрос, касающийся cURL и SSL, так как я не могу найти подходящие ответы на мою проблему.
У меня есть работающий SSL на моем веб-сервере, с доверенным сертификатом и зелеными знаками в адресной строке браузера a.s.o., НЕ самоподписанный. Так хорошо до сих пор.
Теперь я хочу связаться с 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
В приведенном выше коде есть false.pem, который можно увидеть. Что теперь ? Если этот файл пуст, ответ от Сервера отсутствует, но я проверил, чтобы вставить сертификат из другого предприятия из списка на curl.haxx.se Я получаю тот же правильный ответ от сервера, что и в результате, когда я использую свой правильный. PEM
В чем проблема ? Чего мне не хватает?
«Нет ответа от Сервера»
Я думаю, что это очень маловероятно. Я подозреваю, что нет HTTP ответ от сервера, но о том, что согласование SSL не удается — но в вашем коде нет проверки ошибок. Если $ output === false, посмотрите на curl_error ().
Возможно, вы захотите поэкспериментировать с VERIFYHOST и VERIFYPEER, чтобы точно определить причину проблемы.
Других решений пока нет …