wget はコマンドでウェブ上のファイルのダウンロードを行ってくれるプログラム。Windows 版の wget が https で始まるアドレスにアクセスすると、SSL 認証のエラーを起こす問題で、解決方法が存在していたので書き記しておく。
ERROR: cannot verify … certificate
古いバージョンの wget
を使ってファイルをダウンロードしようとすると、次のようなエラーがでる。
1 2 3 4 5 6 7 |
$ wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar --2018-11-13 14:58:18-- https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.72.133 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.72.133|:443... connected. ERROR: cannot verify raw.githubusercontent.com's certificate, issued by 'CN=DigiCert SHA2 High Assurance Server CA,OU=www.digicert.com,O=DigiCert Inc,C=US': Unable to locally verify the issuer's authority. To connect to raw.githubusercontent.com insecurely, use `--no-check-certificate' |
これは、--no-check-certificate
オプションを与えることで回避できるが、悪意のあるサイトにアクセスすると問題があるので、できれば使わないことにこしたことはない。
1 |
$ wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar --no-check-certificate |
既存のバージョンを確認
インストールされている wget のバージョンを調べる。こちらの環境では 1.16.1。
1 2 3 4 |
$ wget --version GNU Wget 1.16.1 built on mingw32. +digest +https +ipv6 +iri +large-file -nls +ntlm +opie -psl +ssl/openssl |
1 2 |
$ which wget /c/Program Files/wget/wget |
which wget
などでインストール場所を確認。ちなみに which
コマンドは Windows のコマンドプロンプトでは使えない。なので、Windows 用の Bash コンソールが入ってない場合は、Windows のコマンドプロンプトで使えないコマンドなどがあるので、エミュレーターをインストールしておく。
最新版の入手
最新版をチェックすると、1.19.4 のようだ。しかも、SSL 関連のアップデートがなされている。
(参照: Windows binaries of GNU Wget)
最新版をダウンロードし、C:\Program Files\wget
下の wget.exe
と置き換える。そして、再度コマンドを実行してみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar --2018-11-13 14:56:27-- https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.72.133 Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.72.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 5366981 (5.1M) [application/octet-stream] Saving to: 'wp-cli.phar.2' 0K .......... .......... .......... .......... .......... 0% 215K 24s (略) 5200K .......... .......... .......... .......... . 100% 1.23M=5.9s 2018-11-13 14:56:34 (884 KB/s) - 'wp-cli.phar.2' saved [5366981/5366981] |
これで、--no-check-certificate
オプションを指定しなくてもエラーが出なくなる。
余談
このようなコマンドは自動化スクリプトに組み込んで使うことが多いので、普段はいちいちタイプして使うことはあまりなかった。実際 --no-check-ceritificate
もスクリプト内で使ってたりする。そして、そのスクリプトは書いてからかれこれ3年ほど経つ。ただ、プログラム自体をアップデートさせることでそのような問題が解決されることがある、というのは再確認することとなった。
かといって、ディペンデシーを常にアップデートさせたほうが良いかというと、これは議論が分かれるところで、ケースバイケース。セキュリティ関連のアップデートはしたほうがいいものの、余計な機能追加のアップデートは得てして新しいバグが紛れ込んでいたり、全体のパフォーマンスを低下させるようなケースもある。WordPress で 4.7 だったかな。REST API が導入されて、セキュリティホールが同時に発生したというケースもある。
機能を重視するか、保守性を重視するか、で意見が異なってくるだろう。趣味や研究目的の場合はガンガンアップデートしたらいいけど、ビジネスでクライアントにサービス提供するために使っている場合は、慎重な姿勢のほうが良いのではないか。