Ошибка подключения к wget ssl
Я пытаюсь загрузить файлы с сайта https и получаю следующую ошибку:
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.
Читая блоги в Интернете, я понял, что должен предоставить сертификат сервера и сертификат клиента. Я нашел шаги о том, как загрузить сертификат сервера, но не сертификат клиента. У кого-нибудь есть полный набор шагов для использования wget с SSL? Я также попробовал параметр --no-check-certificate, но это не сработало.
wget version: wget-1.13.4
openssl version: OpenSSL 1.0.1f 6 Jan 2014
пытаясь загрузить все ресурсы лекции с веб-страницы курса на coursera.org. Таким образом, URL будет выглядеть примерно так: https://class.coursera.org/matrix-002/lecture
Доступ к этой веб-странице в Интернете требует проверки подлинности формы, если вы не уверены, является ли это причиной ошибки.
Ответы
Ответ 1
Это работает отсюда с той же версией OpenSSL, но с более новой версией wget (1.15). Глядя на список изменений, вы видите следующее существенное изменение вашей проблемы:
1.14: добавьте поддержку указателя имени сервера TLS.
Обратите внимание, что на этом сайте не требуется SNI. Но www.coursera.org
требует этого.
И если вы назовете wget с -v --debug
(как я настоятельно рекомендовал в своем комментарии!), Вы увидите:
$ wget https://class.coursera.org
...
HTTP request sent, awaiting response...
HTTP/1.1 302 Found
...
Location: https://www.coursera.org/ [following]
...
Connecting to www.coursera.org (www.coursera.org)|54.230.46.78|:443... connected.
OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.
Таким образом, ошибка на самом деле происходит с www.coursera.org
, и причина в том, что поддержка SNI отсутствует. Вам нужно обновить версию wget.
Ответ 2
Я был в SLES12, и для меня он работал после обновления до wget 1.14, используя --secure-protocol = TLSv1.2 и используя --auth-no-challenge.
wget --no-check-certificate --secure-protocol=TLSv1.2 --user=satul --password=xxx --auth-no-challenge -v --debug https://jenkins-server/artifact/build.x86_64.tgz
Ответ 3
В основном ваш OpenSSL использует SSLv3, а доступ к сайту не поддерживает этот протокол.
Просто обновите свой wget:
sudo apt-get install wget
Или, если он уже поддерживает другой защищенный протокол, просто добавьте его в качестве аргумента:
wget https://example.com --secure-protocol=PROTOCOL_v1
Ответ 4
Один из вариантов - заменить "https" на "http" в URL, который вы пытаетесь загрузить, чтобы просто обойти SSL-соединение. Не самое безопасное решение, но в моем случае это сработало.
Ответ 5
У меня была эта проблема в Ubuntu 12.04.3 LTS (далеко за пределами EOL, я знаю...), и я решил эту проблему:
sudo apt-get update && sudo apt-get install ca-certificates
Ответ 6
Вы, вероятно, имеете старую версию wget. Я предлагаю установить wget, используя Chocolatey, менеджер пакетов для Windows. Это должно дать вам более свежую версию (если не самую последнюю).
Запустите эту команду после установки Chocolatey (от имени администратора):
choco install wget