LoginSignup
43
39

More than 5 years have passed since last update.

HTTPS 時の証明書関連エラーを防ぐための .wgetrc 設定

Last updated at Posted at 2015-07-23

導入

wget を実行するときに下記のような証明書関連のエラーによく出くわします。

$ wget -O - https://www.ana.co.jp/
--2015-07-21 21:27:18--  https://www.ana.co.jp/
www.ana.co.jp (www.ana.co.jp) をDNSに問いあわせています... 23.34.96.213
www.ana.co.jp (www.ana.co.jp)|23.34.96.213|:443 に接続しています... 接続しました。
エラー: www.ana.co.jp の証明書(発行者: `/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G2')の検証に失敗しました:
  発行者の権限を検証できませんでした。
www.ana.co.jp に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。

(ロケールが英語の場合)

$ LANG=C wget -O - https://www.ana.co.jp/
--2015-07-21 21:30:03--  https://www.ana.co.jp/
Resolving www.ana.co.jp (www.ana.co.jp)... 23.34.96.213
Connecting to www.ana.co.jp (www.ana.co.jp)|23.34.96.213|:443... connected.
ERROR: cannot verify www.ana.co.jp's certificate, issued by '/C=US/O=Symantec Corporation/OU=Symantec Trust Network/CN=Symantec Class 3 EV SSL CA - G2':
  Unable to locally verify the issuer's authority.
To connect to www.ana.co.jp insecurely, use `--no-check-certificate'.

ここで

$ wget -O - https://www.ana.co.jp/ --no-check-certificate

とするのは、ダサいです。
HTTPS なんだから、ちゃんと発行者を検証したいですよね。

そもそも一度怒られてからなんとかするのは、二度手間です。イライラします。

対応方法

下記の手順で対応しました。
実行した環境は CentOS7 前提ですが、ほかの環境でも似たような手順で解決できると思います。
それっぽい CA 情報をごった煮させた上で、 wget のデフォルト設定に加えるというアプローチです。もっといい方法があればだれか教えてください。

Curl の CA 情報を取得

$ wget -q -O $HOME/.cacert.pem http://curl.haxx.se/ca/cacert.pem 

Firefox の CA 情報を追加

Curl の CA 情報は Firefox の情報を元に変換しているので、おそらく内容重複している???
この手順は不要???

$  rpm -ql ca-certificates | fgrep .pem | xargs cat >> $HOME/.cacert.pem 

Rubygems の CA 情報を追加

$ rpm -ql rubygems | fgrep .pem | xargs cat >> $HOME/.cacert.pem 

手元のローカルの Firefox の DB を抽出

さらにダメ元で、ローカルの Firefox の証明書情報を抽出。
一部の HTTPS サイトはこの手順を経ないとダメだった。

$  for db in ~/.mozilla/firefox/*.default*/; do
     certutil -L -h "Buildin Object Token" -d $db | \
     awk -F "  " '!/^Certificate Nickname/{print $1}' | \
     xargs -l -inickname certutil -d  $db -L -n nickname -a ;
   done >> $HOME/.cacert.pem

.wgetrc を修正

echo ca-certificate = $HOME/.cacert.pem >> $HOME/.wgetrc

wget を実行

$ wget https://www.ana.co.jp/ ### 証明書のエラーなく正しく実行できる
43
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
39