web-dev-qa-db-ja.com

CygwinのHTTPS URLでwgetを実行したときに証明書エラーを修正するにはどうすればいいですか?

たとえば、wget https://www.dropbox.comを実行すると、次のエラーが発生します。

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
153
Russell Davis

ここで現在のハックな解決策を見て、結局私は適切な解決策を説明しなければならないと思います。

まず、 証明書を取得するには、Cygwinのsetup.exeを使用してcygwinパッケージca-certificatesをインストールする必要があります。

それは根本的に安全ではなく、システムを危険にさらす可能性があるため、/近隣の回答アドバイスとして証明書をダウンロードするためにカールや同様のハックを使用しないでください。

第二に、 あなたはあなたの証明書がどこにあるのかwgetに伝える必要があります、なぜならそれはCygwin環境ではデフォルトでそれらを拾い上げないからです。コマンドラインパラメータ--ca-directory=/usr/ssl/certs(シェルスクリプトに最適)を使用するか、ca_directory = /usr/ssl/certs~/.wgetrcファイルに追加することによってそれを実行できます。

別の回答で指摘されているようにln -sT /usr/ssl /etc/sslを実行することでそれを修正することもできますが、それはうまくいくでしょう あなたがシステムへの管理アクセスを持っている場合のみ。 私が説明した他の解決策はそれを必要としません。

127
Shnatsel

証明書の有効性を確認する必要がない場合は、wgetコマンドラインに--no-check-certificateオプションを追加してください。これは私にとってはうまくいった。

注:これにより、中間者攻撃(MitM)が発生する可能性があります。セキュリティが重要な場合にはお勧めできません。

227
DH4

もし問題が既知のルートCAが見つからないということで、あなたがubuntuやdebianを使っているのなら、この1行で問題を解決することができます。

Sudo apt-get install ca-certificates
97
cguenther

まず、SSL証明書をインストールする必要があります。説明書( https://stackoverflow.com/a/4454754/278488 に基づく):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

上記はcurlを修正するのに十分ですが、wgetは追加のシンボリックリンクを必要とします。

ln -sT /usr/ssl /etc/ssl
13
Russell Davis

これが役に立つかもしれません:

wget --no-check-certificate https://blah-blah.tld/path/filename
5
Alexey Soloviev
apt-get install ca-certificates 

sは違いを生み出します。

2
Pete

私は同様の問題を抱えており、一時的に私のアンチウイルスを無効にすることでそれを修正しました(Kaspersky Free 18.0.0.405)。このAVには、HTTPS応答で見つかったすべての証明書を自動的に自己署名するHTTPS傍受モジュールがあります。

CygwinからのWgetは、AVルート証明書については何も知りません。そのため、Webサイトの証明書が信頼されていない証明書で署名されていることが判明すると、そのエラーを出力します。

AVを無効にせずにこれを恒久的に修正するには、AV証明書をWindowsの証明書ストアから/etc/pki/ca-trust/source/anchorsに.pemファイル(base64エンコーディング)としてコピーしてupdate-ca-trustを実行する必要があります。

1
Denis Bakharev