Не могу wget от github, ошибка рукопожатия sslv3


10

У нас есть скрипт, который загружает мод безопасности с github, который недавно начал давать сбой. На серверах работает CentOS 6, но RHEL 6, вероятно, имеет ту же проблему. Выход:

# wget https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz
--2014-07-22 18:49:46--  https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz
Resolving github.com... 192.30.252.129
Connecting to github.com|192.30.252.129|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://cloud.github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz [following]
--2014-07-22 18:49:47--  https://cloud.github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz
Resolving cloud.github.com... 54.230.99.219, 205.251.219.190, 54.230.97.212, ...
Connecting to cloud.github.com|54.230.99.219|:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.

Любые идеи о том, как исправить или обойти это?


2
используйте другое приложение, напримерcurl
Рабин

1
Чтобы быть более точным, и 54.230.99.219, и несколько (разных) A, которые я получаю для cloud.github.com, дают ошибку рукопожатия s_client без опции ServerNameIndication. serverfault.com/questions/560053/… говорит (несколько месяцев назад) RedHat wget не выполняет SNI, а curl делает.
dave_thompson_085

Вам повезло принять мой ответ
Антон Дозорцев

Ну, если честно, я бы предпочел, чтобы @ dave_thompson_085 или Рабин опубликовали свои комментарии в качестве ответов, поскольку я считаю, что это скорее долгосрочное решение, даже если ваш обходной путь также отлично работает!
Кристофер

Ответы:


2

Если я не ошибаюсь, вы имеете в виду это репо . Попробуй получить URL формы Releases .

Этот случай работает для меня:

$ wget https://github.com/SpiderLabs/ModSecurity/archive/v2.8.0.tar.gz

PS У меня тоже появляется такое же сообщение об ошибке при попытке запустить ваше дело;

$ wget https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz

Хм, этот URL не имеет MD5, хотя :(
Кристофер

raw.githubusercontent.com/$ {USER} / $ {REPO} /path/to/file.tar.gz
Максим Костромин,

10

Вы можете использовать curlкоманду для загрузки:

curl -LO https://github.com/downloads/SpiderLabs/ModSecurity/modsecurity-apache_2.7.1.tar.gz

5
curl -L -Oэто лучшая замена wget, поскольку она следует HTTP-перенаправлениям (особенно полезно здесь, так как Github хочет указать мне свой CDN).
странные особенности

Кроме того, одна вещь, с которой я столкнулся в версиях CentOS 6.5, это то, что она curlподдерживает SNI и wgetне поддерживает ее, поэтому для некоторых сайтов wgetиногда предоставляется сертификат для неправильного хоста и возникает ошибка сертификата, даже если он curlработает нормально.
Ракслице

7

Серверная сторона отключила рукопожатие шифрования SSLv3 из-за серьезных проблем безопасности SSLv3. Более того, ваш wget-клиент является устаревшей версией и по-прежнему использует это шифрование SSLv3 по умолчанию. У вас есть 2 варианта:

  • используйте флаг --secure-protocol = TLSv1 перед wget. wget --secure-protocol=TLSv1
  • установить обновленную версию wget, использующую протокол TLSv1 по умолчанию

5

Вы должны проверить свою версию Wget.

У меня была такая же проблема со старыми версиями wget(<1.15).


2
Похоже, это должен быть комментарий к вопросу, а не ответ.
Дэнни Стейпл

0

Что касается обходного пути, если вы доверяете хосту, попробуйте указать --no-check-certificateили добавить:

check_certificate = off

в ваш ~/.wgetrc(не рекомендуется).

В некоторых редких случаях это происходит из-за системного времени, которое может быть несинхронизированным, что делает недействительными сертификаты, которые работали раньше.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.