Когда я бегу 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