全球主机交流论坛

标题: 【紧急】Let's Encrypt 网站“证书不受信任、已过期”解决办法 [打印本页]

作者: 天权璇玑    时间: 2021-10-6 23:18
标题: 【紧急】Let's Encrypt 网站“证书不受信任、已过期”解决办法
本帖最后由 天权璇玑 于 2021-10-7 00:25 编辑

原文:https://zhuanlan.zhihu.com/p/417627543

最近需要在服务器里部署一些项目,系统环境是 Debian 9 x64,运行脚本后,无故终止。排除网络问题,查看报错,定位到是与某些必要组件的网站连接出现了错误。

用 wget 下载任何由 Let's Encrypt 签发证书的 https 网站的内容,发生报错:

The certificate of 'www.xxx.xxx' is not trusted.
The certificate of 'www.xxx.xxx' has expired.

使用 curl 等工具连接也会报错。

即使按网传方法,安装“ca-certificates”也无解。大量旧 Linux 系统,在2021年9月30日之后,都会面临此问题。

Ubuntu 16.04 解决方法:

有用户在2021年5月19日反馈了这个 bug,官方发布重新编译过的 OpenSSL 1.0.2g 解决了这个问题。

通过官方源将 OpenSSL 组件更至最新即可。在2021年7月28日之后全新安装的 Ubuntu 16.04,也不会再碰到此问题。

  1. apt-get update
  2. apt-get install openssl -y
复制代码


Debian 8 Debian 9 解决方法:

在证书配置文件中,删除“DST_Root_CA_X3”证书,并重载根证书配置:

  1. sed -i '/^mozilla\/DST_Root_CA_X3/s/^/!/' /etc/ca-certificates.conf && update-ca-certificates -f
复制代码


原因:

问题就出在 OpenSSL 1.0.X,它会优先使用长度更短的“DST Root CA X3”与HTTPS网站做验证交换,该证书自从2021年9月30日后过期,一旦验证失效,就会报错终止。后续不再尝试用新的根证书“ISRG Root X1”做验证。OpenSSL 1.1.X 已修复该 Bug。

Debian 9 附带的“libcurl3”软件包中,有一个名为“libssl1.0.2”的共享库依赖,该依赖使 OpenSSL 强制以 1.0.2 版本运行。所以即使 Debian 9 内置了 OpenSSL 1.1.0l,它还是会重现这个问题。并且由于“libcurl3”是 Debian 9 默认源中“curl 7.52.1”的必要依赖,所以只要通过官方源安装 curl 组件,就会出现这个问题。

CentOS 6/7 解决方法:

删除系统内置的,受信任的根证书目录中的“DST_Root_CA_X3”证书:

  1. rm -rf /etc/ca-certificates/trust-source/DST_Root_CA_X3.pem
复制代码


更新证书信任列表配置:

  1. update-ca-trust
复制代码


可能涉及到的 Linux 发行版:

CentOS 7 与 RHEL 7 及更旧版本;

Amazon Linux 和 Amazon Linux 2;

Ubuntu 14.04 及更旧版本;

Debian 8、Debian 9 等更旧版本;

Android 4.0 及更旧版本;

任何使用 OpenSSL 1.0.X 版本,且官方源未发布针对 OpenSSL 1.0.X bug 修复的二进制编译文件的其他 Linux 衍生版本。

对于其他 Linux 发行版,解决问题的核心思路就是:

1. 删除系统内置根证书信任区,或证书管理器配置文件中的“DST_Root_CA_X3”证书;

2. 重载证书管理器配置。


后果同样为失去兼容旧系统,具体命令和方法请自行探究。

作者: h202    时间: 2021-10-6 23:20
还好我只用debian10
作者: hotkk    时间: 2021-10-6 23:20
支持技术帖
作者: ASDC    时间: 2021-10-6 23:22
支持契合论坛的主题贴
作者: scheme    时间: 2021-10-6 23:23
已经升到11了
作者: 笑花落半世琉璃    时间: 2021-10-6 23:24
Debain9好像没有遇到过  先插个眼
作者: b66667777    时间: 2021-10-6 23:39

作者: hjvn2211445    时间: 2021-10-6 23:58
还真有问题,发现采集站用let ssl,采集不到了,停在了9.30
马上更新了
作者: 剁手mjj    时间: 2021-10-7 00:11
不错。
作者: shunglay    时间: 2021-10-7 00:20
点个赞
作者: 雪丫鬟    时间: 2021-10-7 06:35
都是系统太旧的原因
作者: Renzheng    时间: 2021-10-7 08:11
For CentOS 7

  1. sudo yum install ca-certificates -y
  2. sudo update-ca-trust force-enable
复制代码


作者: antbt    时间: 2021-10-7 08:41
来晚了,1号就已经解决问题了
作者: pingtan    时间: 2021-10-7 11:41
感谢分享,
作者: zhongziso    时间: 2021-10-7 11:55
mark
作者: keylows    时间: 2021-10-7 12:17
这个必须顶
作者: monface    时间: 2021-10-7 13:14
下载https://curl.se/ca/cacert.pem 这个证书,再更新到服务器上不能解决问题?
作者: 天权璇玑    时间: 2021-10-7 13:14
monface 发表于 2021-10-7 13:14
下载https://curl.se/ca/cacert.pem 这个证书,再更新到服务器上不能解决问题?

过期旧证书必须要从系统里移除
作者: monface    时间: 2021-10-8 11:26
rm -rf /etc/ca-certificates/trust-source/DST_Root_CA_X3.pem
这个路径不存在
作者: leftgg    时间: 2021-10-17 15:15
天权璇玑 发表于 2021-10-7 13:14
过期旧证书必须要从系统里移除

原来如此,不覆盖吗?
作者: CNAME    时间: 2021-10-17 15:53
用的宝塔,直接续期
作者: 清晓    时间: 2021-10-19 15:02
Renzheng 发表于 2021-10-7 08:11
For CentOS 7

求教这个是否可以解决centos8上面的证书错误?error: x509: certificate has expired or is not yet valid: current time 2021-10-18T10:11:10Z is after 2021-09-30T14:01:15Z
作者: Renzheng    时间: 2021-10-21 22:26
清晓 发表于 2021-10-19 15:02
求教这个是否可以解决centos8上面的证书错误?error: x509: certificate has expired or is not yet vali ...

试试
  1. sudo dnf install ca-certificates -y
  2. sudo update-ca-trust force-enable
复制代码

作者: hcyme    时间: 2021-10-21 22:33
谢谢各位帅哥伦比亚




欢迎光临 全球主机交流论坛 (https://loc.888543.xyz/) Powered by Discuz! X3.4