wgetがhttps(SSL)からのダウンロードが失敗(https_proxy) + curlでのダウンロード
wgetがhttps(SSL)からのダウンロードが失敗したことがあったので、その備忘録です。
補足として、curl を使ったファイルダウンロードの方法も簡単に書いています。
wgetでhttps(SSL)からダウンロードしようとして失敗
wget を使用して https(SSL)のファイルをダウンロードしようとしたら失敗しました。
$ wget https://github.com/mrgoofy33/dotfiles_vim/zipball/master --2011-02-03 23:00:00-- https://github.com/mrgoofy33/dotfiles_vim/zipball/master github.com をDNSに問いあわせています... 失敗しました: 名前またはサービスが不明です. wget: ホストアドレス `github.com' を解決できませんでした。
http(非SSL)のファイルは問題なくダウンロードが出来ました。
$ wget http://www.google.co.jp/ --2011-02-03 23:00:00-- http://www.google.co.jp/ your.proxy.server をDNSに問いあわせています... 10.10.10.10 your.proxy.server|10.10.10.10|:8080 に接続しています... 接続しました。 Proxy による接続要求を送信しました、応答を待っています... 200 OK 長さ: 特定できません [text/html] `index.html' に保存中 [ <=> ] 9,039 --.-K/s 時間 0.009s 2011-02-03 23:00:01 (940 KB/s) - `index.html' へ保存終了 [9039]
念のため、wgetのバージョン/ライブラリを確認
念のため、wgetのバージョンとリンクライブラリを確認します。
wgetのバージョン確認
wget のバージョンは「wget --version」で確認出来ます。
新しいバージョンなので特に問題はなさそうです。
$ wget --version GNU Wget 1.11.4 Red Hat modified Copyright (C) 2008 Free Software Foundation, Inc. ライセンス GPLv3+: GNU GPL バージョン 3 あるいはそれ以降のバージョン
wgetのリンクライブラリ確認
wget のリンクライブラリの確認は「ldd コマンド」で行います。
「libssl.so」にもリンクされているので、wget自体は問題なさそうです。
$ ldd /usr/bin/wget linux-gate.so.1 => (0x005ae000) libssl.so.6 => /lib/libssl.so.6 (0x001f2000) libcrypto.so.6 => /lib/libcrypto.so.6 (0x00c86000) libdl.so.2 => /lib/libdl.so.2 (0x00a2b000) libz.so.1 => /usr/lib/libz.so.1 (0x00a78000) librt.so.1 => /lib/librt.so.1 (0x00aef000) libc.so.6 => /lib/libc.so.6 (0x008d0000) libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x001c2000) libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x0012a000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x00dea000) libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00101000) libresolv.so.2 => /lib/libresolv.so.2 (0x00c2f000) /lib/ld-linux.so.2 (0x008b1000) libpthread.so.0 => /lib/libpthread.so.0 (0x00a32000) libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00def000) libkeyutils.so.1 => /lib/libkeyutils.so.1 (0x00c2a000) libselinux.so.1 => /lib/libselinux.so.1 (0x00ad5000) libsepol.so.1 => /lib/libsepol.so.1 (0x00a8d000)
.wgetrc に「https_proxy」を追加
wget をプロキシ経由で実行する - スキルの杜 を確認してみると、以前(yum/wgetをproxy経由で使う方法(CentOS))に設定した「.wgetrc」に「https_proxy」の記述が足りていなかったようです。
vim でホームディレクトリにある「.wgetrc」を開いて編集します。
$ vim ~/.wgetrc
下記のように「https_proxy」を追記します。
# Proxy Setting http_proxy=http://your.proxy.server:8080 https_proxy=http://your.proxy.server:8080 → これを追記 proxy_user=username proxy_password=password
設定を再読込させるために、一度ログオフして再ログインをします。
再度、wgetでhttps(SSL)からダウンロードしてみる
「.wgetrc」の設定が出来たので、再度 wget でhttps(SSL)からファイルをダウンロードしてみます。
「SSL による接続が確立できません」で失敗
前回と同じように wget を実行すると、「SSL による接続が確立できません」という形でエラーメッセージが表示されて、ダウンロードが失敗しました。
$ wget https://github.com/mrgoofy33/dotfiles_vim/zipball/master --2011-02-03 23:43:11-- https://github.com/mrgoofy33/dotfiles_vim/zipball/master your.proxy.server をDNSに問いあわせています... 10.10.10.10 your.proxy.server|10.10.10.10|:8080 に接続しています... 接続しました。 エラー: 証明書に記載されている名前 `*.github.com' とホスト名 `github.com' が一致しません github.com に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。 SSL による接続が確立できません。
「--no-check-certificate」を指定して成功
さっきのメッセージの中に「安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。」とあるので、「--no-check-certificate」を指定して、再度 wget を実行してみます。
$ wget --no-check-certificate https://nodeload.github.com/mrgoofy33/dotfiles_vim/zipball/master --2011-02-03 23:45:49-- https://nodeload.github.com/mrgoofy33/dotfiles_vim/zipball/master your.proxy.server をDNSに問いあわせています... 10.10.10.10 your.proxy.server|10.10.10.10|:8080 に接続しています... 接続しました。 Proxy による接続要求を送信しました、応答を待っています... 200 OK 長さ: 494545 (483K) `master' に保存中 100%[====================================================================>] 494,545 53.7K/s 時間 8.8s 2011-02-03 23:46:01 (54.9 KB/s) - `master' へ保存完了 [494545/494545]
今度はダウンロードが成功しました。
・・・が、ファイル名が「master」という名前のままでダウンロードされてしまいました。
$ ls -l 合計 492 -rw-r--r-- 1 user group 494545 2月 3 23:46 master
「-O hoge.zip」を指定して別ファイル名でダウンロード
別ファイル名でダウンロードするには「-O」オプションを使用します。「-O ファイル名」の形で指定します。
※以下のサンプルでは「hoge.zip」という名前でダウンロードしています。
$ wget --no-check-certificate -O hoge.zip https://nodeload.github.com/mrgoofy33/dotfiles_vim /zipball/master --2011-02-03 23:46:54-- https://nodeload.github.com/mrgoofy33/dotfiles_vim/zipball/master your.proxy.server をDNSに問いあわせています... 10.10.10.10 your.proxy.server|10.10.10.10|:8080 に接続しています... 接続しました。 Proxy による接続要求を送信しました、応答を待っています... 200 OK 長さ: 494545 (483K) `hoge.zip' に保存中 100%[====================================================================>] 494,545 119K/s 時間 4.0s 2011-02-03 23:47:00 (119 KB/s) - `hoge.zip' へ保存完了 [494545/494545]
今度は指定したファイル名でダウンロードすることができました。
$ ls -l 合計 492 -rw-r--r-- 1 user group 494545 2月 3 23:47 hoge.zip
補足)curlでのファイルのダウンロード
wget でのダウンロード方法/設定を書きましたが、curl を使えば、「.wgetrc」のような設定をしなくても、ファイルをダウンロードすることが出来ます。
$ curl -L -x http://username:password@your.proxy.server:8080 -o hoge.zip https://github.com/mrgoofy33/dotfiles_vim/zipball/master
今回参考にしたページ
wget をプロキシ経由で実行する
http://www.geocities.jp/gronlijus/skill/linux/linux-wget-proxy.html
wgetでhttpsがダウンロードできない ≪ ブログタイトル
http://junichi.moe.hm/blog_boyaki_wget-de-https.html
wgetでhttpsがダメなのはca-certificatesが無いのが原因だった ≪ ブログタイトル
http://junichi.moe.hm/blog_debian_wget-de-https-2.html
curlの使い方
http://www.big.or.jp/~crane/cocoa/0800_internet/curl/