Запуск curl с OpenSSL 0.9.8 на сервере OpenSSL 1.0.0 вызывает ошибку рукопожатия? - PullRequest
10 голосов
/ 23 декабря 2011

Если я запускаю curl на машине, на которой работает OpenSSL 1.0.0e, например:

curl -v https://shumaker.flexrentalsolutions.com

на машине, на которой работает OpenSSL 0.9.8r, я получаю следующую ошибку:

About to connect() to shumaker.flexrentalsolutions.com port 443 (#0)
*   Trying 50.112.122.15... connected
* Connected to shumaker.flexrentalsolutions.com (50.112.122.15) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
* Closing connection #0

Если я запускаю ту же команду curl на машине с OpenSSL 1.0.0e, команда завершается без проблем.

Похоже, что рукопожатие не завершается должным образом, по-видимому, из-за некоторой несовместимости междудве версии OpenSSL.

Есть идеи, как это исправить?

Ответы [ 5 ]

14 голосов
/ 21 июня 2013

Если в протоколе установлена ​​версия openssl, она работает:

Для командной строки:

curl -v -3 https://shumaker.flexrentalsolutions.com

Если в php:

curl_setopt($ch, CURLOPT_SSLVERSION,3);
6 голосов
/ 24 декабря 2011

Это ошибка (OpenSSL), которая все еще открыта. Подробности были опубликованы в этом сообщении об ошибке скручивания .

Более подробная информация была опубликована в OpenSSL-dev от "mancha".

0 голосов
/ 02 февраля 2016

У меня есть эта проблема на OS X при использовании brew на некоторых серверах https, brew использует curl для внутреннего использования. Обратите внимание, что это только на OS X 10.7.5, которая застряла на OpenSSL / 0.9.8r. Я бы обновил, но Apple не поддерживает> 10,7 на этом iMac!

Мое исправление состояло в том, чтобы обновить curl с помощью brew, который повысил версию до 1.0.2f, но, к счастью, установка brew для curl не

brew install curl
0 голосов
/ 21 мая 2015

Теперь из-за POODLE vulnerability многие сайты теперь отключают SSL 3.0

Вы должны использовать TLS следующим образом:

curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1)

Если вывсе еще есть ошибка (для Apache), проверьте, правильно ли ваш vhost получил правильную настройку ServerName

0 голосов
/ 18 января 2012

Это не хорошее решение, но оно лучше, чем вращение колес, поэтому я добавлю его в ответ:

Используйте модуль GnuTLS вместо mod_ssl, если можете. Он не связан с OpenSSL, поэтому эта ужасная, бесполезная проблема остаётся в стороне.

...