web-dev-qa-db-ja.com

wget sslアラートハンドシェイクエラー

Httpsサイトからファイルをダウンロードしようとすると、次のエラーが表示されます。

OpenSSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Unable to establish SSL connection.

オンラインでブログを読むことから、サーバー証明書とクライアント証明書を提供する必要があります。サーバー証明書をダウンロードする手順を見つけましたが、クライアント証明書はダウンロードしていません。 SSLでwgetを使用するための完全なステップセットはありますか? --no-check-certificateオプションも試しましたが、うまくいきませんでした。

wget version: wget-1.13.4
openssl version: OpenSSL 1.0.1f 6 Jan 2014

coursera.orgのコースのWebページからすべての講義リソースをダウンロードしようとしています。したがって、URLは次のようになります。 https://class.coursera.org/matrix-002/lecture

このWebページにオンラインでアクセスするには、フォーム認証が必要ですが、それが失敗の原因かどうかはわかりません。

29
sotn

ここから同じOpenSSLバージョンで動作しますが、wgetの新しいバージョン(1.15)です。変更ログを見ると、問題に関して次の重要な変更があります。

1.14:TLSサーバー名表示のサポートを追加します。

このサイトはSNIを必要としないことに注意してください。しかし、www.coursera.orgはそれを必要とします。そして、-v --debugでwgetを呼び出すと(コメントで明示的に推奨したように!)表示されます:

$ 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のバージョンをアップグレードする必要があります。

36
Steffen Ullrich

私は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
2
Atul Soman

私はUbuntu 12.04.3 LTSでこの問題を抱えていました(EOLをはるかに超えています...)、それで回避しました:

Sudo apt-get update && Sudo apt-get install ca-certificates
1
jaybrau

基本的に、OpenSSLはSSLv3を使用し、アクセスしているサイトはそのプロトコルをサポートしていません。

Wgetを更新するだけです:

Sudo apt-get install wget

または、別の安全なプロトコルを既にサポートしている場合は、引数として追加します。

wget https://example.com --secure-protocol=PROTOCOL_v1

0
Rad Apdal

おそらく、古いバージョンのwgetがあります。 Windowsのパッケージマネージャーである Chocolatey を使用してwgetをインストールすることをお勧めします。これにより、最新バージョン(最新でない場合)が提供されます。

Chocolateyを(管理者として)インストールした後、次のコマンドを実行します。

choco install wget
0
Pheelbert

1つの代替方法は、SSL接続を回避するために、ダウンロードしようとしているURLの「https」を「http」に置き換えることです。最も安全なソリューションではありませんが、私の場合はこれでうまくいきました。

0
JohnnyUtah