在Cygwin中的HTTPS URL上运行wget时如何修复证书错误?

时间:2012-02-10 07:35:39

标签: https cygwin certificate 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.

12 个答案:

答案 0 :(得分:225)

如果您不关心检查证书的有效性,只需在wget命令行中添加--no-check-certificate选项即可。这对我很有用。

注意:这可以让您了解中间人(MitM)攻击,不建议您关注安全性。

答案 1 :(得分:127)

在这里看一下当前的hacky解决方案,我觉得我必须先描述一个合适的解决方案。

首先,您需要通过Cygwin的setup.exe安装cygwin软件包ca-certificates以获取证书。

请勿使用curl或类似的黑客来下载证书(作为相邻的答案建议),因为从根本上是不安全的,可能会危及系统。

第二,你需要告诉wget你的证书在哪里,因为它在Cygwin环境中默认不会提取它们。如果您可以使用命令行参数--ca-directory=/usr/ssl/certs(最适合shell脚本)或将ca_directory = /usr/ssl/certs添加到~/.wgetrc文件来执行此操作。

您还可以按照另一个答案中的指示运行ln -sT /usr/ssl /etc/ssl来解决此问题,但只有在您拥有对系统的管理访问权限时才能解决此问题。我所描述的其他解决方案不需要这一点。

答案 2 :(得分:96)

如果问题是缺少已知的根CA以及当您使用ubuntu或debian时,那么您可以使用以下一行来解决问题:

sudo apt-get install ca-certificates

答案 3 :(得分:13)

首先,需要安装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

答案 4 :(得分:5)

可能会有所帮助:

wget --no-check-certificate https://blah-blah.tld/path/filename

答案 5 :(得分:2)

apt-get install ca-certificates 

s有所不同;)

答案 6 :(得分:1)

我有类似的问题,并通过暂时禁用我的防病毒软件(Kaspersky Free 18.0.0.405)来解决。该AV具有HTTPS拦截模块,该模块会自动对在HTTPS响应中找到的所有证书进行自签名。

来自Cygwin的Wget对AV根证书一无所知,因此当它发现该网站的证书已使用非信任证书签名时,它将打印该错误。

要在不禁用AV的情况下永久修复此问题,应将Windows证书存储中的AV根证书作为.pem文件(base64编码)复制到/etc/pki/ca-trust/source/anchors并运行update-ca-trust

答案 7 :(得分:0)

在安装新的SSL证书后,wget到我自己的实时网站存在类似问题,返回错误。我已经检查了几种浏览器,它们没有报告任何错误:

wget --no-cache -O - "https://example.com/..." ERROR: The certificate of ‘example.com’ is not trusted. ERROR: The certificate of ‘example.com’ hasn't got a known issuer.

问题是我从颁发者那里安装了错误的证书颁发机构.pem / .crt文件。通常,他们将SSL证书和CA文件打包为zip文件,但是DigiCert通过电子邮件向您发送证书,并且您必须自己找出匹配的CA。 https://www.digicert.com/help/有一个SSL证书检查器,如果他们同意,它会列出SSL授权和希望匹配的CA以及漂亮的蓝色链接图形:

`SSL证书:颁发者GeoTrust TLS DV RSA混合SHA256 2020 CA-1

CA:主题GeoTrust TLS DV RSA混合SHA256 2020 CA-1 有效期从2020年7月16日到2023年5月31日 发行者DigiCert全球根CA`

答案 8 :(得分:0)

就在上周我们安装了一个新生成的证书时,我们刚刚遇到了同样的问题。我也看过另外两次……但我学得很慢。在所有 3 种情况下,我都必须获得“中间证书”并安装它们。换句话说,我的证书很好,但它的签名者或签名者的签名者未正确安装。确保您访问您的证书提供商的站点并获取正确的中间证书并将它们也安装在您的服务器上,然后此警告就会消失。

它可能不是只是上面的,也可能是客户端没有更新列表......但我会确保这不仅仅是你没有首先完全安装证书,然后再联系客户并确保他们的清单得到更新。

答案 9 :(得分:0)

就我而言,在 raspberry pi 3B 上,时间是在未来(2025 年),我需要使用 ntpdate 通过将时间传递到过去来更新到当前本地时间,并解决了问题。< /p>

 $ sudo date +%Y%m%d -s "20210101"
 $ sudo ntpdate times1.mike.fi

答案 10 :(得分:-1)

只做

apt-get install ca-certificate

答案 11 :(得分:-4)

如果您使用的是Windows,只需转到控制面板,单击自动更新,然后单击Windows Update网站链接。按照步骤。至少这对我有用,没有更多的证书问题,即每当我像以前一样去https://www.dropbox.com时。