【问题标题】:How do I fix certificate errors when running wget on an HTTPS URL in Cygwin?在 Cygwin 中的 HTTPS URL 上运行 wget 时如何修复证书错误?
【发布时间】:2012-03-02 17:12:08
【问题描述】:

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

【问题讨论】:

    标签: https cygwin certificate wget


    【解决方案1】:

    在我的情况下,在树莓派 3B 上,时间是在未来(2025 年),我需要使用 ntpdate 将时间传递到过去并解决问题。

     $ sudo date +%Y%m%d -s "20210101"
     $ sudo ntpdate times1.mike.fi
    

    【讨论】:

      【解决方案2】:

      就在上周,当我们安装了一个新铸造的证书时,我们也遇到了同样的问题。我也看过另外两次......但我学起来很慢。在所有 3 种情况下,我都必须获得“中间证书”并安装它们。换句话说,我的证书很好,但它的签名者或签名者的签名者没有正确安装。确保您访问证书提供商的站点并获取正确的中间证书并将它们也安装在您的服务器上,然后此警告就会消失。

      可能不是只是上述情况,也可能是客户端没有更新列表...但我会确保不仅仅是您没有首先正确安装证书,然后继续联系客户并确保他们的列表已更新。

      【讨论】:

        【解决方案3】:

        我在安装新的 SSL 证书后遇到了与我自己的实时网站返回错误类似的 wget 问题。我已经检查了几个浏览器,它们没有报告任何错误:

        wget --no-cache -O - "https://example.com/..." ERROR: The certificate of ‘example.com’ is not trusted. ERROR: The certificate of ‘example.com’ hasn't got a known issuer.

        问题是我从颁发者那里安装了错误的证书颁发机构 .pem/.crt 文件。通常他们将 SSL 证书和 CA 文件捆绑为一个 zip 文件,但 DigiCert 将证书通过电子邮件发送给您,您必须自己找出匹配的 CA。 https://www.digicert.com/help/ 有一个 SSL 证书检查器,如果他们同意,它会列出 SSL 授权和希望匹配的 CA,并带有漂亮的蓝色链接图形:

        `SSL 证书:颁发者 GeoTrust TLS DV RSA 混合 SHA256 2020 CA-1

        CA:主题 GeoTrust TLS DV RSA 混合 SHA256 2020 CA-1 有效期为 2020 年 7 月 16 日至 2023 年 5 月 31 日 发行者 DigiCert 全球根 CA`

        【讨论】:

          【解决方案4】:

          我有类似的问题,并通过暂时禁用我的防病毒软件(卡巴斯基免费版 18.0.0.405)解决了这个问题。此 AV 具有 HTTPS 拦截模块,可自动对在 HTTPS 响应中找到的所有证书进行自签名。

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

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

          【讨论】:

          【解决方案5】:

          这可能会有所帮助:

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

          【讨论】:

          • 还有一个:如果您使用 Kaspersky AntiVirus 或相同的软件,这种情况也可能发生(默认情况下,它会将站点的正常验证 SSL 证书替换为他们自己的) - 因此,您可以禁用在 Antivirus 中检查 SSL 流量软。
          • 警告:使用此解决方案,您将容易受到中间人攻击
          • 这不能解决问题!!
          【解决方案6】:
          apt-get install ca-certificates 
          

          s 与众不同 ;)

          【讨论】:

          • cygwin中没有apt-get,所以这行不通。
          • @jlh 安装 apt-cyg 然后您应该能够运行大量有用的命令来安装软件包。上面的命令翻译成: $ apt-cyg install ca-certificates
          【解决方案7】:

          做事

          apt-get install ca-certificate
          

          【讨论】:

            【解决方案8】:

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

            sudo apt-get install ca-certificates
            

            【讨论】:

            • apt-get 在 cygwin 上? apt-get 在 redgat 上? ;)
            • ca-certificates 已安装在我的计算机中。运行update-ca-certificates 解决了这个问题。
            • 这也适用于我的带有 Debian chroot 的 Synology DS215j。
            • @fox update-ca-certificates 是 ubuntu 命令,在 debian 中不可用。
            • @Devy 它实际上在我运行 debian wheezy 的树莓派上工作
            【解决方案9】:

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

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

            【讨论】:

            • 这对我有用。有关安装和更新证书的其他解决方案并没有解决它。在我的特殊情况下,没有安全问题。
            【解决方案10】:

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

            【讨论】:

            • 这与 Cygwin 无关
            【解决方案11】:

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

            首先,您需要通过 Cygwin 的 setup.exe 安装 cygwin 包 ca-certificates 以获取证书。

            不要使用 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,我希望有人能方便地使用这一点。
            • 对于 fink,它们位于 /sw/etc/ssl/certs/ca-bundle.crt 中,它是 ca-bundle 包的一部分——如 here 所述。跨度>
            • 不确定是不是拼写错误,但ln -s /etc/ssl /usr/ssl 对我有用。
            • 我再次安装并使用该命令,终端说我有新版本并且仍然不信任github,我将使用--no-check-certificate运行。
            【解决方案12】:

            首先,需要安装 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
            

            【讨论】:

            • 从随机网站安装根证书颁发机构是否不安全,尤其是名称中包含 haxx 的情况?
            • @Chloe curl.haxx.se 是 cURL 的开发站点。非常值得信赖的人。
            • 不卷曲怎么解决?
            • omfg 符号链接是我错过的...搜索 30 分钟以查找 1 行修复 >
            • 这在几个层面上都是 hacky。首先,您不需要手动下载证书,因为有一个名为“ca-certificates”的 Cygwin 包。其次,符号链接仅在您对系统具有管理权限或仅为您的用户帐户安装 cygwin 时才有效,但情况并非总是如此,因此代码不可靠。
            猜你喜欢
            • 2012-12-04
            • 1970-01-01
            • 2019-09-21
            • 1970-01-01
            • 1970-01-01
            • 2022-06-13
            • 2012-04-09
            • 2019-06-21
            • 2015-10-31
            相关资源
            最近更新 更多