Артем Л.
11416 сообщений
#7 лет назад
Добрый день.
При обращении к сайтам на https с помощью CURL выдается ошибка:
SSL routines: SSL23_GET_SERVER_HELLO: sslv3 alert handshake failure

Перерыл весь интернет, ничего не помогает
Хотя тот же скрипт при обращении к яндексу по https ведет себя корректно, а на других сайтах не работает.
В чем может быть дело и куда копать?


curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, $ua);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, $follow);
curl_setopt($curl, CURLOPT_INTERFACE, $set_ip);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_HEADER, $h);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
Сидоров В.
918 сообщений
#7 лет назад
Мб еще  и CURLOPT_SSL_VERIFYHOST
и CURLOPT_VERBOSE включить ?
Артем Л.
11416 сообщений
#7 лет назад
Добавил


curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);


Тоже самое.
Сидоров В.
918 сообщений
#7 лет назад
Ненене, первое выключить
а второе не только включить, а еще посмотреть что напишет в STDERR
Артем Л.
11416 сообщений
#7 лет назад
Сделал

* About to connect() to site.ru port 80 (#0)
* Trying 87.236.16.123... * Name '89.108.76.143' family 2 resolved to '89.108.76.143' family 2
* Local port: 0
* connected
* Connected to site.ru (87.236.16.123) port 80 (#0)
> GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Host: site.ru
Accept: */*
Accept-Encoding: deflate, gzip

< HTTP/1.1 301 Moved Permanently
< Server: nginx-reuseport/1.11.3
< Date: Thu, 10 Nov 2016 13:14:20 GMT
< Content-Type: text/html; charset=UTF-8
< Content-Length: 0
< Connection: keep-alive
< Keep-Alive: timeout=30
< X-Powered-By: PHP/5.6.23
< X-Pingback:
< Location:
<
* Connection #0 to host site.ru left intact
* Issue another request to this URL: ';
* About to connect() to site.ru port 443 (#1)
* Trying 87.236.16.123... * Name '89.108.76.143' family 2 resolved to '89.108.76.143' family 2
* Local port: 0
* connected
* Connected to site.ru (87.236.16.123) port 443 (#1)
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
* Closing connection #1
* Closing connection #0
ction #0
ion #1
* Closing connection #0
Сидоров В.
918 сообщений
#7 лет назад


проверьте версии
Артем Л.
11416 сообщений
#7 лет назад
PHP Version 5.2.13
libcurl/7.20.1 OpenSSL/0.9.8b zlib/1.2.3

Обновлять OpenSSL? Или libcurl? Или все вместе?
Сидоров В.
918 сообщений
#7 лет назад
На мой скромный взгляд как минимум сначала php
а остальное может зависимостями и подтянется
Артем Л.
11416 сообщений
#7 лет назад
Огого, боюсь при обновлении PHP перестанет что-то работать из старых скриптов, написанных давно.
Поможет ли только обновление OpenSSL?
Сергей Глушко
834 сообщения
#7 лет назад
Нужно обновить openssl на сервере, установить openssl-devel, и пересобрать из исходников дополнение php5-openssl и возможно php5-curl. Причем сейчас php5-openssl может у вас и не быть, php может быть собран прямо с  ним , поэтому возможно прийдется пересобрать php 5,2
Готовых пакетов со свежими SSL либами под php 5.2 наврятли где то есть
Артем Л.
11416 сообщений
#7 лет назад
Большое спасибо за консультацию, буду думать)