web-dev-qa-db-ja.com

wgetに自己署名証明書を信頼させる方法(--no-check-certificateを使用せずに)?

  • Ubuntu 12.04
  • OpenSSL 1.0.1 14
  • Wget 1.13.4

私のセットアップ:

  • 独自のCAを作成します(our_own_ca.crt
  • 上記のCAで署名された証明書を生成します(graphite.local.crt
  • その証明書とCA証明書をバンドルファイルに連結します

Nginxの設定:

ssl_certificate /etc/ssl/certs/graphite.local.crt;
ssl_certificate_key /etc/ssl/certs/graphite.local.key;
ssl_client_certificate /etc/ssl/certs/our_own_ca_chained.crt;

と:

our_own_ca_chained.crt = graphite.local.crt + own_own_ca.crt

このCAを信頼済みストアにインストールするには、/usr/share/doc/ca-certificates/README.Debianによると、それを/usr/local/share/ca-certificates/にコピーしてから、update-ca-certificatesを実行するだけです。出力は次のとおりです。

Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....
Warning: there was a problem reading the certificate file /etc/ssl/certs/our_own_ca.pem. Message:
  Extensions not allowed in v2 certificate
done.
done.

その後、/etc/ssl/certsに次のようなものが表示されます。

lrwxrwxrwx 1 root root   17 Mar 11 05:27 99ff557c.0 -> our_own_ca.pem
lrwxrwxrwx 1 root root   17 Mar 11 05:27 dc79b3f0.0 -> our_own_ca.pem
lrwxrwxrwx 1 root root   50 Mar 11 05:27 our_own_ca.pem -> /usr/local/share/ca-certificates/our_own_ca.crt

その後、curlは機能しました:

カール-I https://graphite.local

HTTP/1.1 302 FOUND
Server: nginx
Date: Wed, 11 Mar 2015 05:30:30 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Vary: Cookie
Location: https://graphite.local/account/login?next=/
Strict-Transport-Security: max-age=15768000

しかしwgetはしません:

wget https://graphite.local
--2015-03-11 05:31:22--  https://graphite.local/
Resolving graphite.local (graphite.local)... 127.0.0.1
Connecting to graphite.local (graphite.local)|127.0.0.1|:443... connected.
ERROR: cannot verify graphite.local's certificate, issued by `xxx':
  Self-signed certificate encountered.
To connect to graphite.local insecurely, use `--no-check-certificate'.

私も--ca-certificateを使用しようとしましたが、同じエラーが発生しました。

私は何か見落としてますか?

3
quanta

--ca-directory=directoryオプション:

wget --ca-directory=/etc/ssl/certs https://graphite.local

wget manual から

PEM形式のCA証明書を含むディレクトリを指定します。各ファイルには1つのCA証明書が含まれており、ファイル名は証明書から派生したハッシュ値に基づいています。これは、OpenSSLで提供されるc_rehashユーティリティで証明書ディレクトリを処理することによって実現されます。多くの証明書がインストールされている場合、Wgetがオンデマンドで証明書をフェッチできるため、「-ca-directory」を使用する方が「--ca-certificate」よりも効率的です。

このオプションがない場合、WgetはOpenSSLのインストール時に選択されたシステム指定の場所でCA証明書を探します。

1