例如,运行会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.
Answers:
看看这里最新的骇客解决方案,我觉得我毕竟必须描述一个适当的解决方案。
首先,您需要ca-certificates
通过Cygwin的setup.exe 安装cygwin软件包以获取证书。
不要使用curl或类似的技巧来下载证书(作为邻近的答案建议),因为这从根本上是不安全的,并且可能会损害系统。
其次,您需要告诉wget您的证书在哪里,因为在Cygwin环境中默认情况下它不会拾取它们。如果可以使用命令行参数--ca-directory=/usr/ssl/certs
(最适合Shell脚本)或通过添加ca_directory = /usr/ssl/certs
到~/.wgetrc
文件中来做到这一点。
您也可以ln -sT /usr/ssl /etc/ssl
按照另一个答案中指出的方式运行,以解决此问题,但这仅在您具有对系统的管理访问权限时才有效。我描述的其他解决方案不需要这样做。
ln -s /etc/ssl /usr/ssl
对我有用。
如果问题是缺少已知的根CA,并且在使用ubuntu或debian时,可以用以下一行代码解决问题:
sudo apt-get install ca-certificates
update-ca-certificates
解决了问题。
update-ca-certificates
是一个ubuntu命令,在debian中不可用。
首先,需要安装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
我有类似的问题,并通过暂时禁用我的防病毒软件(Kaspersky Free 18.0.0.405)来解决。该AV具有HTTPS拦截模块,该模块会自动对在HTTPS响应中找到的所有证书进行自签名。
来自Cygwin的Wget对AV根证书一无所知,因此当它发现该网站的证书已使用非信任证书签名时,它将打印该错误。
要在不禁用AV的情况下永久解决此问题,您应该将Windows证书存储中的AV根证书复制/etc/pki/ca-trust/source/anchors
为.pem文件(base64编码)并运行update-ca-trust
如果您使用的是Windows,请转到控制面板,单击自动更新,然后单击Windows Update网站链接。只需按照步骤。至少这对我有用,不再发行证书,即像以前一样每次访问https://www.dropbox.com时。