Назад | Перейти на главную страницу

curl успешно выполняет запрос https, wget не выполняет

Когда я бегу curl из командной строки

curl "https://example.com"

Успешно выполняется немедленно, возвращая результат запроса.

Когда я запускаю ту же команду wget

wget https://example.com

В конце концов истекает время ожидания с сообщением «Невозможно установить SSL-соединение». без какого-либо конкретного сообщения об ошибке. Он подключается, но не может выполнить квитирование SSL. Я пробовал с --no-check-certificate но это не имело значения - похоже, это связано с тайм-аутом.

Тем не мение:

wget http://example.com

отлично работает (HTTP против HTTPS).

Это также влияет на PHP "file()" вызов метода.

Мой вопрос в том, что может заставить curl успешно получить страницу (для всех сайтов в нашем домене), но не wget или интерпретатор php? Это новая проблема на выходных, раньше сервер был в порядке.

(Операционная система - Red Hat Enterprise Linux 6.4)

Это похоже на проблему с выбором протокола SSL. Почему-то сервер придирчив к протоколу. Некоторые клиенты делают правильное предположение, другие - нет.

С участием wget, попробуйте, например. --secure-protocol=tlsv1 или --secure-protocol=sslv3. Подробнее см. Справочная страница GNU Wget.

С PHP см. этот вопрос на SO.

В Red Hat Enterprise Linux 6.x и более ранних основных версиях wget не поддерживает Индикация имени сервера, который необходим для правильного доступа к растущему количеству веб-сайтов, защищенных TLS / SSL, вполне возможно, включая ваш. С другой стороны, curl в RHEL 6 действительно поддерживается SNI.

Red Hat знает об этой проблеме и выпустила исправление в RHEL 6.6. Проблема также исправлена ​​в RHEL 7.0.

На первый взгляд, в этом нет большого смысла. Первый шаг - убедиться, что wget вообще работает с ssl (можно ли использовать wget для других ssl-сайтов?).

Если нет: преследуйте это как проблему wget

(Обратите внимание: если вы попробуете четыре разных ssl-сайта w wget, и два из них сломаются, это все равно проблема wget)

Другая диагностика: что браузер делает с URL-адресом https? (chrome и ffox) - выдают ли предупреждения или подключаются чисто?

последняя версия wget (1.15) на Centos 6.5

Мне пришлось скомпилировать wget 1.15, а затем заменить wget yum

wget http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
tar -zxvf wget-1.15.tar.gz
cd wget-1.15
./configure --prefix=/usr/local/bin --with-ssl=openssl
# replace wget, confirm
cp /usr/local/bin/wget /usr/bin/wget