Wget 和 Curl 停止使用 HTTPS。错误地抱怨证书过期

cod*_*key 5 ssl curl wget

我有一个每天在 Ubuntu 14.04 服务器上运行的脚本。该脚本是一个简单的 wget 命令,它从远程服务器下载文件并将其保存到本地文件系统:

wget https://example.com/resources/scripts/myfile.php -O myfile.php
Run Code Online (Sandbox Code Playgroud)

几个月来它一直运行良好,直到今天早上当我运行它时突然出现:

--2020-05-30 11:57:16--  https://example.com/resources/scripts/myfile.php
Resolving example.com (example.com)... xx.xx.xx.xx
Connecting to example.com (example.com)|xx.xx.xx.xx|:443... connected.
ERROR: cannot verify example.com's certificate, issued by ‘/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA’:
  Issued certificate has expired.
To connect to example.com insecurely, use `--no-check-certificate'.
Run Code Online (Sandbox Code Playgroud)

该域的 SSL 有效并于 2022 年 1 月到期。这方面没有任何变化。然而不知何故 wget 不再看到这一点。

这是另一个有趣的事实。如果我在 Ubuntu 18 机器上运行这个完全相同的命令,它就像一个魅力,没有任何抱怨。这告诉我我的 Ubuntu 14.04 机器有问题。

Curl 产生相同的错误:

curl https://example.com
curl: (60) SSL certificate problem: certificate has expired
Run Code Online (Sandbox Code Playgroud)

这篇文章表明证书包已过期。我已经下载了建议的 PEM 文件并尝试通过指定 --ca-certificate=cacert.pem 选项来运行 wget,但无济于事。

我也试过运行: apt install ca-certificatesand update-ca-certificates,但这也不起作用。

同样,在 Ubuntu 18 盒子上一切正常,但在 Ubuntu 14 或 16 上却没有。另外,为什么直到今天早上我知道没有人碰过盒子时它才能正常工作?显然有些东西已经过时了,但我似乎无法弄清楚如何修复它。

有人有什么建议吗?

Xim*_*mix 7

两天前我在 Comodo Certificate 和 ubuntu 16.04 上遇到了同样的错误。问题就像说这个https://support.sectigo.com/Com_KnowledgeDetailPage?Id=kA03l00000117LT

我修复了以下步骤:

  • vi /etc/ca-certificates.conf
  • 删除指定 AddTrust_External_Root.crt 的行(或注释)
  • apt update && apt install ca-certificates
  • 更新-ca-certificates -f -v


小智 2

https://askubuntu.com/questions/440580/how-does-one-remove-a-certificate-authoritys-certificate-from-a-system

与原始海报一样,编辑 ca-certificates.conf 的方法在 Ubuntu 14.04 上对我不起作用。做了什么工作:

  1. 运行 sudo dpkg-重新配置 ca-证书

  2. 取消选择问题 CA:AddTrust_External_Root

  3. 按确定

我的理解是删除过期的CA并使用AddTrust_External_Root较新的CA。USERTrust_RSA_Certification_Authority