CURL PHP сбой рукопожатия SSL

1

У меня есть следующий код:

<?php
$cookie_file_path = "cookie.txt"; // 
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'theurl');
curl_setopt($ch, CURLOPT_POSTFIELDS,'blocPnr_textField_labelNom='.urlencode('www').'&blocPnr_textField_labelPnr='.urlencode('xxx').'&blocPnr_valider=Submit');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSLVERSION,3); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
curl_setopt($ch, CURLOPT_REFERER, "theurl");
$page = curl_exec($ch);
var_dump($page);
echo 'error:' . curl_error($ch);
?>

Это дает мне следующую ошибку:

Ошибка bool (false): ошибка: 14094410: Процедуры SSL: SSL3_READ_BYTES: сбой вызова подтверждения sslv3

Я не могу понять, откуда взялся pb. Я искал подобное сообщение об ошибке в Google и S/O, но не нашел решения.

  • 1
    Вы уверены, что это sslv3 ?
  • 0
    как я могу знать ? а какие разные версии я могу попробовать? Я посмотрел на это ( curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html ), но не уверен, что понимаю, что печатать
Показать ещё 3 комментария
Теги:
curl
ssl
handshake

1 ответ

1
Лучший ответ

Вы пытаетесь использовать версию 3 протокола SSL, которая либо отказана, либо не поддерживается сервером. Атака POODLE заставила многих системных администраторов отказаться от поддержки SSLv3, и ее использование не так широко распространено (и определенно не рекомендуется).

Когда у вас возникли ошибки установления связи SSL, попробуйте разные версии SSL/TLS до тех пор, пока один из них не будет работать (желательно самый безопасный). Если у вас есть сомнения, использование CURL_SSLVERSION_DEFAULT работает в большинстве случаев.

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT);

Кажется, что formulaire.sncf.com поддерживает TLSv1.0. Вы также можете использовать эту версию протокола:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0);
  • 1
    Нет - начните с полного удаления CURLOPT_SSLVERSION и проверки работоспособности автосогласования (должно). Вы должны ограничивать SSLVERSION только в том случае, если у вас есть для этого особая необходимость.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню