如何在Cygwin的HTTPS URL上运行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. 

在这里看一下目前的解决scheme,我觉得我必须要描述一个合适的解决scheme。

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

不要使用curl或类似的黑客来下载证书(作为邻居的答案build议),因为这基本上是不安全的,可能会危及系统。

其次,你需要告诉wget你的证书在哪里,因为它在Cygwin环境中默认没有select它们。 如果可以使用命令行参数--ca-directory=/usr/ssl/certs (最适合shell脚本)或者将ca_directory = /usr/ssl/certs~/.wgetrc文件来~/.wgetrc操作。

您也可以通过运行ln -sT /usr/ssl /etc/ssl来解决这个问题,正如在另一个答案中指出的那样,但只有当您具有对系统的pipe理访问权限时才能工作 我描述的其他解决scheme并不需要。

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

注意:这会使您面临中间人(MitM)攻击,不build议您关心安全性的任何事情。

如果问题是一个已知的根CA丢失,当你使用Ubuntu或Debian,那么你可以用这一行解决问题:

 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 

做就是了

 apt-get install ca-certificate 

如果你正在使用Windows只是去控制面板,点击自动更新然后单击Windows更新网站链接。 只要按照步骤。 至less这对我来说,没有更多的证书问题,即每当我像以前一样去https://www.dropbox.com