Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
33
Help us understand the problem. What is going on with this article?

More than 5 years have passed since last update.

@cuzic

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

導入

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/ ### 証明書のエラーなく正しく実行できる
33
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
33
Help us understand the problem. What is going on with this article?