1. ホーム
  2. linux

[解決済み] Ubuntu 14.04 LTS の wget で SSL 接続が確立できない。

2022-03-03 16:05:40

質問

wgetで画像をダウンロードしようとしたら、エラーになりました。Unable to establish SSL connection.

wget https://www.website.com/image.jpg
--2015-02-26 01:30:17--  https://www.website.com/image.jpg
Resolving www.website.com (www.website.com)... xx.xxx.xx.xx
Connecting to www.website.com (www.website.com)|xx.xxx.xx.xx|:443... connected.
Unable to establish SSL connection.

私のテストケースです。

  1. Ubuntu 12.04.4 LTS (GNU/Linux 3.8.0-44-generic x86_64) を使用し、GNU Wget 1.13.4 build on linux-gnu, I could download the image を上記のコードで実行します。エラーはありません。
  2. Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64), GNU Wget 1.15 built on linux-gnu, I couldn't be download the image. を使用しています。

もう一つの変数は、www.website.com が TLS 1.0 を使用していることです。これがwgetにどのような影響を与えるのか、私には見当がつきません。しかし、TLS 1.2のウェブサイトから画像をwgetした場合、両方のテストケースからssl接続エラーが発生しません。

Ubuntu 14.04 または wget 1.15 は TLS 1.0 ウェブサイトに対応していないのでしょうか? この接続を有効にするために、何かライブラリやソフトウェアをインストール/ダウンロードする必要がありますか?

解決方法を教えてください。

<ブロッククオート

...今、私がテストしているウェブサイトでのみ発生します。機密事項のため、ここに掲載することはできません。

となると、TLS1.2と相性の悪いサイトの一つということになりますね。12.04で使われているopensslはクライアント側でTLS1.2を使用していませんが、14.04ではTLS1.2を使用しているので、この違いが出ているのでしょう。これを回避するために、明示的に --secure-protocol=TLSv1 . それでもだめな場合は、以下の方法でアクセスできるかどうか確認してください。 openssl s_client -connect ... (おそらくない) と openssl s_client -tls1 -no_tls1_1, -no_tls1_2 ... .

他の原因も考えられますが、この原因が最も可能性が高く、サイトにアクセスしない限り、すべては推測に過ぎませんのでご注意ください。

想定される問題の詳細 通常、クライアントはサーバーにアクセスする際に、最も互換性のあるハンドシェイクを使用します。これはSSLv23ハンドシェイクで、古いSSLバージョンと互換性がありますが、クライアントがサポートする最高のTLSバージョンを発表し、サーバーが最適なバージョンを選択できるようにするものです。この場合、wgetはTLS1.2をアナウンスします。しかし、TLS1.2のようなものがあることを想定していない壊れたサーバーもあり、クライアントがこのホットな新バージョン(2008年から!)のサポートを発表すると、サーバーがサポートする最適なバージョンで応答するのではなく、ハンドシェイクを拒否してしまうのです。このような壊れたサーバーにアクセスするためには、クライアントは嘘をついて、TLS1.0しかサポートしていないと主張しなければならないのです。

<ブロッククオート

Ubuntu 14.04 や wget 1.15 は TLS 1.0 ウェブサイトに対応していないのでしょうか?この接続を可能にするために、何かライブラリやソフトをインストール/ダウンロードする必要がありますか?

問題はサーバーであり、クライアントではありません。 ほとんどのブラウザは、壊れたサーバーを下位バージョンで再試行することで対処しています。他のほとんどのアプリケーションは、最初の接続試行が失敗すると永久に失敗します。