在Cygwin中的HTTPS URL上运行wget时,如何解决证书错误?


Answers:


131

看看这里最新的骇客解决方案,我觉得我毕竟必须描述一个适当的解决方案。

首先,您需要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按照另一个答案中指出的方式运行,以解决此问题,但这仅在您具有对系统的管理访问权限时才有效。我描述的其他解决方案不需要这样做。


5
感谢您提供此答案,尤其是有关〜/ .wgetrc文件的提醒。作为MacPorts用户,我的证书位于/ opt / local / etc / openssl,我希望有人可以使用这一事实。
布莱斯·安德森

3
而对于芬克,他们在其中当属部分/sw/etc/ssl/certs/ca-bundle.crt ca-bundle包-描述这里
jhfrontz

不知道这是不是错字,但ln -s /etc/ssl /usr/ssl对我有用。
zkent

240

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

注意:这使您容易受到中间人(MitM)攻击,因此不建议您在任何关心安全性的情况下使用。


1
这对我有用。有关安装和更新证书的其他解决方案无法解决该问题。在我的特定情况下,没有安全问题。
marlar

103

如果问题是缺少已知的根CA,并且在使用ubuntu或debian时,可以用以下一行代码解决问题:

sudo apt-get install ca-certificates

1
apt-get在cygwin上?apt-get在redgat上吗?;)
Denis Chenu 2014年

5
我的计算机中已经安装了ca-certificates。运行update-ca-certificates解决了问题。
托马斯福克斯

这在Debian chroot的Synology DS215j上也起作用。
microspino

@fox update-ca-certificates是一个ubuntu命令,在debian中不可用。
Devy

@Devy它实际上在运行我的树莓派上运行debian wheezy
Luis Lobo Borobia

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

6
从随机网站安装根证书颁发机构是否不安全,尤其是名称为haxx的情况?
Chloe 2012年

6
@Chloe curl.haxx.se是cURL的开发站点。相当值得信赖的人。
ylluminate 2012年

如何固定而不卷曲?
Mark Lakata 2012年

1
omfg symlink是我所错过的...在30分钟内搜索了1个班轮修复程序> <
Populus

4
这在几个层面上都是很棘手的。首先,您不需要手动下载证书,因为有一个名为“ ca-certificates”的Cygwin软件包。其次,符号链接仅在您具有对系统的管理访问权限或仅为您的用户帐户安装了cygwin时才起作用,这种情况并非总是如此,因此代码不可靠。
Shnatsel

10

可能这会有所帮助:

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

1
另一点:如果您使用的是Kaspersky AntiVirus或相同的软件(默认情况下,它是将正常的经过验证的SSL证书站点替换为自己的站点),这种情况也是可能的-因此,您可以禁用在Antivirus软件中检查SSL流量。
Alexey Soloviev

4
apt-get install ca-certificates 

s使得差;)


apt-getcygwin中没有,所以这行不通。
jlh

1

我有类似的问题,并通过暂时禁用我的防病毒软件(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



-4

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


这是不相关的Cygwin的
Synthead
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.