在Cygwin中的HTTPS URL上运行wget时如何修复证书错误?

Rus*_*vis 158 https cygwin wget certificate

例如,运行会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.
Run Code Online (Sandbox Code Playgroud)

DH4*_*DH4 231

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

注意:这可以让您了解中间人(MitM)攻击,不建议您关注安全性.

  • 这对我有用。关于安装和更新证书的其他解决方案没有解决它。在我的特殊情况下,没有安全问题。 (3认同)

Shn*_*sel 129

看看目前的hacky解决方案,我觉得我必须要描述一个合适的解决方案.

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

  • 感谢您的回答,尤其是关于〜/ .wgetrc文件的提醒.作为MacPorts用户,我的证书位于/ opt/local/etc/openssl,我希望有人发现这个事实. (5认同)
  • 对于fink,它们位于/sw/etc/ssl/certs/ca-bundle.crt中,它是`ca-bundle`包的一部分 - 如[here]所述(https://finkers.wordpress. COM/2009/10/06/wget的和 - HTTPS /). (3认同)

cgu*_*her 100

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

sudo apt-get install ca-certificates
Run Code Online (Sandbox Code Playgroud)

  • ca-certificates已经安装在我的电脑上.运行`update-ca-certificates`解决了这个问题. (4认同)
  • apt-get 在 cygwin 上吗?apt-get 在 redgat 上吗?;) (2认同)

Rus*_*vis 13

首先,需要安装SSL证书.说明(基于/sf/answers/311832811/):

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
Run Code Online (Sandbox Code Playgroud)

以上内容足以修复curl,但wget需要额外的符号链接:

ln -sT /usr/ssl /etc/ssl
Run Code Online (Sandbox Code Playgroud)

  • 从随机网站安装根证书颁发机构是不是不安全,特别是在名称中使用haxx? (6认同)
  • @Chloe curl.haxx.se这是cURL的开发站点.相当值得信赖的人. (6认同)
  • 这在几个层面都是hacky.首先,您不需要手动下载证书,因为有一个称为"ca-certificates"的Cygwin包.其次,符号链接仅在您具有系统管理访问权限或仅为您的用户帐户安装了cygwin时才有效,但情况并非总是如此,因此代码不可靠. (4认同)

Ale*_*iev 8

可能这会有所帮助:

wget --no-check-certificate https://blah-blah.tld/path/filename
Run Code Online (Sandbox Code Playgroud)

  • 这并不能解决问题! (3认同)
  • 另外:如果您使用卡巴斯基反病毒软件或相同的软件(默认情况下,它将站点的正常验证 SSL 证书替换为自己的),这种情况也可能发生 - 因此,您可以在防病毒软件中禁用检查 SSL 流量。 (2认同)

小智 5

apt-get install ca-certificates 
Run Code Online (Sandbox Code Playgroud)

s使得差;)


Den*_*rev 5

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

Cygwin 的 Wget 对 AV 根证书一无所知,因此当它发现网站的证书是用不信任证书签名时,它会打印该错误。

要永久修复此问题而不禁用 AV,您应该将 AV 根证书从 Windows 证书存储复制为/etc/pki/ca-trust/source/anchors.pem 文件(base64 编码)并运行update-ca-trust