Ошибка подключения к 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