たとえば、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.
ここで現在のハックな解決策を見て、結局私は適切な解決策を説明しなければならないと思います。
まず、 証明書を取得するには、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
を実行することでそれを修正することもできますが、それはうまくいくでしょう あなたがシステムへの管理アクセスを持っている場合のみ。 私が説明した他の解決策はそれを必要としません。
証明書の有効性を確認する必要がない場合は、wgetコマンドラインに--no-check-certificate
オプションを追加してください。これは私にとってはうまくいった。
注:これにより、中間者攻撃(MitM)が発生する可能性があります。セキュリティが重要な場合にはお勧めできません。
もし問題が既知のルートCAが見つからないということで、あなたがubuntuやdebianを使っているのなら、この1行で問題を解決することができます。
Sudo apt-get install ca-certificates
まず、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
これが役に立つかもしれません:
wget --no-check-certificate https://blah-blah.tld/path/filename
apt-get install ca-certificates
s
は違いを生み出します。
私は同様の問題を抱えており、一時的に私のアンチウイルスを無効にすることでそれを修正しました(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
を実行する必要があります。