2014年3月29日土曜日

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

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

(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





0 件のコメント:

コメントを投稿