发出 curl 请求时 SSL 证书不起作用 - Sectigo AddTrust 外部 CA 根已过期

SSL certificate not working while making curl request - Sectigo AddTrust External CA Root expired

虽然我尝试打开一些域,例如 https://tracking.buyhatke.com , https://s1.ripple.com ,但它们工作得很好,但是当我尝试从终端向这些页面发出 curl 请求时,它说证书已过期。在浏览器中,证书显示还有很长时间到期。

curl "https://tracking.buyhatke.com"
curl "https://s1.ripple.com"

任何人都可以指导我这里有什么问题吗?它从今天开始发生,突然之间

我们的域名也一样,但它们将在一年后到期。 sonarcloud.io 也一样。所有这些域在其证书链中都有一个已过期的公共 CA。

openssl s_client -connect s1.ripple.com:443
CONNECTED(00000003)
depth=3 C = SE, O = AddTrust AB, OU = AddTrust External TTP Network, CN = AddTrust External CA Root
verify error:num=10:certificate has expired
notAfter=May 30 10:48:38 2020 GMT

我目前正在调查如何继续进行此操作,所以我没有答案可以给你,只是目前失败的原因。

所以,这是因为颁发了根 CA 证书。这可以通过这种方式固定在 Ubuntu 16 上:-

 1. Edit /etc/ca-certificates.conf
 2. Remove mozilla/AddTrust_External_Root.crt
 3. sudo apt update && sudo apt install ca-certificates && sudo update-ca-certificates -f -v

帮我修好了

编辑

添加一些有用的东西可以帮助我们根据您的需要修复客户端和服务器端

https://www.agwa.name/blog/post/fixing_the_addtrust_root_expiration

如前所述,这是由于 AddTrust_External_Root 证书到期

这里有一个快速详细的修复方法:

  1. 从您的系统中删除 AddTrust_External_Root.crt(通常在 /etc/ssl/certs 中)
  2. /etc/ca-certificates.conf
  3. 中删除或评论 "mozilla/AddTrust_External_Root" 行
  4. 运行 sudo update-ca-certificates (或者如果不行,试试@Prashant Singh 推荐的版本)