У меня возникли проблемы с склеиванием URL-адреса HTTPS, который использует TLS1.2, в моей работе с curl Я отправляю свои данные для входа на сайт и сохраняю его в файле cookie. Сообщение об ошибке я получаю этоTLS 1.2 не работает в cURL
error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error
Я попытался установить VERIFYPEER
и VERIFYHOST
к 0, но это не похоже на работу, какие-то предложения?
Вот варианты, которые я использую:
- OpenSSL версии 0.9.8b
- CURL версия 7.24.0
- РНР 5,3
Вот код:
$setuplogin = curl_init();
curl_setopt ($setuploginurl, CURLOPT_URL, $url);
curl_setopt ($setuploginurl, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt ($setuploginurl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt ($setuploginurl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt ($setuploginurl, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_TLSv1_2');
curl_setopt ($setuploginurl, CURLOPT_POSTFIELDS, 'username=uname&password=pword&act=login&submit=Login');
curl_setopt ($setuploginurl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36");
curl_setopt (setuploginurl, CURLOPT_TIMEOUT, 60);
curl_setopt ($setuploginurl, CURLOPT_COOKIESESSION, TRUE);
curl_setopt ($setuploginurl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($setuploginurl, CURLOPT_HEADER, 1);
curl_setopt ($setuploginurl,CURLOPT_ENCODING,"gzip");
curl_setopt ($setuploginurl, CURLOPT_POST, true);
curl_setopt ($setuploginurl, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt ($setuploginurl, CURLOPT_FRESH_CONNECT , 1);
$loginp= curl_exec($setuploginurl);
if ($loginp === FALSE) {
die(curl_error($setuploginurl));
}
curl_close ($setuploginurl);
var_dump ($loginp);
Вы должны использовать 2 для CURLOPT_SSL_VERIFYHOST, а не 1. – Bruno
Я не знаю, является ли это автоматическим, но переход на PHP v 5.6.33 решил мою проблему , –