例如,运行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.

当前回答

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

首先,您需要通过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来解决这个问题,这在另一个答案中指出,但只有当您对系统有管理访问权限时才会起作用。我描述的其他解决方案不需要这样做。

其他回答

只做

apt-get install ca-certificate

不是完全一样的问题。在docker上,我正在将我的主机文件系统挂载到/etc,其中已经安装了OpenSSL certs,这将被覆盖。

改变安装到不同的文件系统可以解决这个问题。

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

首先,您需要通过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来解决这个问题,这在另一个答案中指出,但只有当您对系统有管理访问权限时才会起作用。我描述的其他解决方案不需要这样做。

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

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

我有类似的问题,并通过暂时禁用我的反病毒(卡巴斯基免费18.0.0.405)修复了它。该反病毒具有HTTPS拦截模块,自动自签名它在HTTPS响应中找到的所有证书。

来自Cygwin的Wget对AV根证书一无所知,所以当它发现网站的证书与不信任证书签署时,它会打印这个错误。

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