例如,运行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.
例如,运行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.
首先,需要安装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
如果问题是一个已知的根CA缺失,并且当你使用ubuntu或debian时,那么你可以用这一行来解决问题:
sudo apt-get install ca-certificates
如果您不关心检查证书的有效性,只需在wget命令行上添加——no-check-certificate选项。这对我来说很有效。
注意:这将使您容易受到中间人(MitM)攻击,不建议在任何您关心安全性的情况下使用。
看看目前的解决方案在这里,我觉得我必须描述一个合适的解决方案。
首先,您需要通过cygwin的setup.exe安装cygwin包ca-certificates以获得证书。
不要使用curl或类似的黑客来下载证书(作为相邻的回答建议),因为这从根本上是不安全的,可能会危及系统。
其次,您需要告诉wget证书的位置,因为在Cygwin环境中,默认情况下wget不会获取证书。如果您可以使用命令行参数——ca-directory=/usr/ssl/certs(最适合shell脚本)或将ca_directory =/usr/ssl/certs添加到~/,则可以这样做。wgetrc文件。
您也可以通过运行ln -sT /usr/ssl /etc/ssl来解决这个问题,这在另一个答案中指出,但只有当您对系统有管理访问权限时才会起作用。我描述的其他解决方案不需要这样做。
如果您使用的是windows,只需转到控制面板,单击自动更新,然后单击windows更新网站链接。照着这一步做。至少这对我来说是有效的,没有更多的证书问题,即每当我像以前一样去https://www.dropbox.com。
我有类似的问题,并通过暂时禁用我的反病毒(卡巴斯基免费18.0.0.405)修复了它。该反病毒具有HTTPS拦截模块,自动自签名它在HTTPS响应中找到的所有证书。
来自Cygwin的Wget对AV根证书一无所知,所以当它发现网站的证书与不信任证书签署时,它会打印这个错误。
要在不禁用AV的情况下永久修复此问题,您应该将Windows证书存储中的AV根证书以.pem文件(base64编码)的形式复制到/etc/pki/ca-trust/source/anchors中,然后运行update-ca-trust
我也遇到过类似的问题,在安装新的SSL证书后,wget到我自己的实时网站返回错误。我已经检查了几个浏览器,他们没有报告任何错误:
wget——no-cache - o- "https://example.com/…"错误:' example.com '的证书不受信任。错误:' example.com '的证书没有已知的颁发者。
问题是我安装了错误的证书颁发机构。pem/。来自发行者的CRT文件。通常他们会将SSL证书和CA文件打包成zip文件,但DigiCert会将证书通过电子邮件发送给您,您必须自己找出匹配的CA。https://www.digicert.com/help/有一个SSL证书检查器,它列出了SSL权威和希望匹配的CA,如果他们同意,一个漂亮的蓝色链接图形:
SSL Cert: Issuer GeoTrust TLS DV RSA Mixed SHA256 2020 CA-1
CA: Subject GeoTrust TLS DV RSA Mixed SHA256 2020 CA-1 有效期为2020年7月16日至2023年5月31日 颁发者DigiCert全球根CA '
We just had this same issue come up when we installed a newly minted certificate just this last week. I've also seen it two other times...yet I'm slow to learn. In all 3 cases I had to get the "intermediate certificates" and install them. In other words My cert was good but it's signer or it's signer's signer wasn't correctly installed. Make sure you go to your certificate provider's site and get the correct intermediate certificates and install them as well on your server and then this warning will go away.
可能不仅仅是上面的原因,也可能是客户没有更新列表……但我会确保这不仅仅是你没有完全安装正确的证书,然后再到客户端,并确保他们的列表更新。
在我的例子中,在树莓派3B上,时间是在未来(2025年),我需要使用ntpdate通过将时间传递到过去来更新到当前的本地时间,它解决了这个问题。
$ sudo date +%Y%m%d -s "20210101"
$ sudo ntpdate times1.mike.fi
不是完全一样的问题。在docker上,我正在将我的主机文件系统挂载到/etc,其中已经安装了OpenSSL certs,这将被覆盖。
改变安装到不同的文件系统可以解决这个问题。
多亏了丹尼斯·巴哈列夫,我破案了。
如果有人有Cygwin wget不工作,因为“证书不受信任”,并安装了ca-certificate,并拥有自动自签名所有证书的反病毒,它在HTTPS响应中发现,那么你需要:
从你的AV中获取根证书(我用浏览器获得了我的证书:打开任何https网站,检查它的证书,去证书路径选项卡,点击根证书。然后点击查看证书按钮,进入详细信息页签,点击复制到文件…按钮。在*中保存证书可以使用默认设置。cer文件)。 转换*。Cer到*.crt。可以通过以下命令使用Cygwin的OpenSSL:
openssl x509 -通知DER -in <your *. .Cer证书文件> -out <new cert>.crt . out . out
移动新*。CRT文件到ca-directory(在我的例子中是/etc/pki/tls/certs/)。
这足以让我开始工作了。