WgetがSSLでダウンロードできない場合

wgetがSSLでダウンロードできない場合の対処法です。
[参考記事] Wgetの基本的な使い方など
[参考記事] WgetがFTPでダウンロードできない場合
[参考記事] wgetが遅い場合の対処法

SSLが使用できるのはバージョン1.7以降(2001年6月リリース)です。
証明書の安全性が確認できない場合
プロトコルバージョンでエラーが出る場合
接続したあとに『SSL による接続が確立できません。』と出る場合
リンクライブラリの確認

証明書の安全性が確認できない場合

証明書のホスト名が不一致だった場合や自己署名証明書・期限切れなどでSSL証明書が確認できなかった時にはエラーが発生します。

$ wget https://www.example.com/hoge/test.txt
--2014-07-31 18:49:59--  https://www.example.com/hoge/test.txt
www.example.com をDNSに問いあわせています... xxx.xxx.xxx.xxx
www.example.com|xxx.xxx.xxx.xxx|:443 に接続しています... 接続しました。
エラー: www.example.com の証明書(発行者: `/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G2')の検証に失敗しました:
  発行者の権限を検証できませんでした。
www.example.com に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。
$ wget https://www.example.com/hoge/test.txt
--2014-07-24 02:01:52--  https://www.example.com/hoge/test.txt
www.example.com をDNSに問いあわせています... xxx.xxx.xxx.xxx
www.example.com|xxx.xxx.xxx.xxx|:443 に接続しています... 接続しました。
エラー: 証明書に記載されている名前 `www.example.net' とホスト名 `www.example.com' が一致しません
www.example.com に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。
$ wget https://www.example.com/hoge/test.txt
--2014-07-24 02:01:52--  https://www.example.com/hoge/test.txt
www.example.com をDNSに問いあわせています... xxx.xxx.xxx.xxx
www.example.com|xxx.xxx.xxx.xxx|:443 に接続しています... 接続しました。
エラー: www.example.com の証明書(発行者: `/C=JP/CN=www.example.com')の検証に失敗しました:
  自己署名証明書です。
www.example.com に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。

この場合、証明書の確認を行わない『--no-check-certificate』オプションを使用するとダウンロードできる場合があります。
ただし証明書の安全性を確認しないので、なりすましなどの危険性があります。
CAの証明書がインストールされていないため発行者の権限を検証できない場合は、CA証明書をブラウザからファイル出力して 『--ca-certificate=file』オプションで指定するとより安全です。

$ wget --no-check-certificate https://www.example.com/hoge/test.txt

プロトコルバージョンでエラーが出る場合

SSLのプロトコルバージョンでエラーが出る場合があります。

$ wget https://www.example.com/hoge/test.txt
--2014-07-24 02:01:52--  https://www.example.com/hoge/test.txt
www.example.com をDNSに問いあわせています... xxx.xxx.xxx.xxx
www.example.com|xxx.xxx.xxx.xxx|:443 に接続しています... 接続しました。
OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
SSL による接続が確立できません。

この場合、バージョンを指定する『--secure-protocol=TLSv1』オプションを使用するとダウンロードできる場合があります。

$ wget --secure-protocol=TLSv1 https://www.example.com/hoge/test.txt

接続したあとに『SSL による接続が確立できません。』と出る場合

$ wget https://www.example.com/hoge/test.txt
--2014-07-24 02:01:52--  https://www.example.com/hoge/test.txt
www.example.com をDNSに問いあわせています... xxx.xxx.xxx.xxx
www.example.com|xxx.xxx.xxx.xxx|:443 に接続しています... 接続しました。
SSL による接続が確立できません。

この場合、バージョンを指定する『--secure-protocol=TLSv1』オプションを使用するとダウンロードできる場合があります。

$ wget --secure-protocol=TLSv1 https://www.example.com/hoge/test.txt

ブラウザでアクセスできるときはSSL証明書を確認するといいです。
SSL証明書の表示が次のようになっている場合はTLSv1です。

SSL証明書の表示が次のようになっている場合はオプションがなくwgetが使用できます。

リンクライブラリの確認

SSLが使用できない場合にはリンクライブラリを確認して、libssl.soとリンクされているか確認します。

ldd /usr/bin/wget
        linux-gate.so.1 =>  (0x00e31000)
        libssl.so.10 => /usr/lib/libssl.so.10 (0x005e4000)
        libcrypto.so.10 => /usr/lib/libcrypto.so.10 (0x0070e000)
        libdl.so.2 => /lib/libdl.so.2 (0x00b59000)
        librt.so.1 => /lib/librt.so.1 (0x003ac000)
        libc.so.6 => /lib/libc.so.6 (0x001c7000)
        libgssapi_krb5.so.2 => /lib/libgssapi_krb5.so.2 (0x008dd000)
        libkrb5.so.3 => /lib/libkrb5.so.3 (0x003b5000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x0035e000)
        libk5crypto.so.3 => /lib/libk5crypto.so.3 (0x00923000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x00f9c000)
        libz.so.1 => /lib/libz.so.1 (0x00aa1000)
        /lib/ld-linux.so.2 (0x00ed4000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00363000)
        libkrb5support.so.0 => /lib/libkrb5support.so.0 (0x00c70000)
        libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x0037e000)
        libselinux.so.1 => /lib/libselinux.so.1 (0x00c94000)

関連記事

スポンサーリンク

Date.toTimeString

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る