goo blog サービス終了のお知らせ 

ttt

getttyent

wgetでhttpsなときに--no-check-certificateをつけない方法

2014-03-28 23:59:00 | デジタル・インターネット

以前、こんなことがあって

(FreeBSD) /usr/bin/fetchは、httpsなときproxyサーバを使わない?

しかたないから、httpsなときはwgetでダウンロードしてました。
ただ、wgetでhttpsなところからダウンロードするとき

% wget https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-ttf-2.00.1.tar.gz

とかやりますと、

ERROR: cannot verify fedorahosted.org's certificate, issued by '/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA':
  Unable to locally verify the issuer's authority.
To connect to fedorahosted.org insecurely, use `--no-check-certificate'.

メッセージを日本語にしているときは

エラー: fedorahosted.org の証明書(発行者: `/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA')の検証に失敗しました:
  発行者の権限を検証できませんでした。
fedorahosted.org に安全の確認をしないで接続するには、`--no-check-certificate' を使ってください。

というエラーになってしまいます。
じゃあ、「--no-check-certificate」オプションをつければいいのかというと、正論としては、それはいけないでしょう、となるわけです。まあ、FreeBSDのportsだと、チェックサムを比較するので、改ざんされたファイルだったとしたら気がつきますけど・・・

ちゃんとしよう!ということで、info wgetして斜め読み。

wgetrcにて、ca_certificateというので指定すればよさそうです。

はて、FreeBSDの場合、CAのファイルはどこにあるんだろう?と思ったのですが、最初に思いついたのは、これ。
FreeBSDのportsのsecurity/ca_root_nss (←たいてい依存関係でインストールされている)にて

/usr/local/share/certs/ca-root-nss.crt

というファイルが置かれているようです。

というわけで、/usr/local/etc/wgetrc (このファイルがないときはwgetrc.sampleをコピー)の最後のあたりに

ca_certificate = /usr/local/share/certs/ca-root-nss.crt

と書いておけばよいのでした。

20140328


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。